[
  {
    "path": ".github/CODEOWNERS",
    "content": "*  @prometheus-operator/kube-prometheus-reviewers\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.md",
    "content": "---\nname: Bug\nabout: Report a bug related to kube-prometheus\nlabels: kind/bug\n---\n\n<!--\n\nFeel free to ask questions in #prometheus-operator on Kubernetes Slack!\n\n-->\n\n**What happened?**\n\n**Did you expect to see some different?**\n\n**How to reproduce it (as minimally and precisely as possible)**:\n\n**Environment**\n\n* Prometheus Operator version:\n\n    `Insert image tag or Git SHA here`\n    <!-- Try kubectl -n monitoring describe deployment prometheus-operator -->\n\n* Kubernetes version information:\n\n    `kubectl version`\n    <!-- Replace the command with its output above -->\n\n* Kubernetes cluster kind:\n\n    insert how you created your cluster: kops, bootkube, tectonic-installer, etc.\n\n* Manifests:\n\n```\ninsert manifests relevant to the issue\n```\n\n* Prometheus Operator Logs:\n\n```\nInsert Prometheus Operator logs relevant to the issue here\n```\n\n* Prometheus Logs:\n\n```\nInsert Prometheus logs relevant to the issue here\n```\n\n**Anything else we need to know?**:\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.md",
    "content": "---\nname: Feature\nabout: If you want to propose a new feature or enhancement\nlabels: kind/feature\n---\n\n<!--\n\nFeel free to ask questions in #prometheus-operator on Kubernetes Slack!\n\n-->\n\n**What is missing?**\n\n**Why do we need it?**\n\n**Environment**\n\n* kube-prometheus version:\n\n    `Insert Git SHA here`\n\n**Anything else we need to know?**:\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/support.md",
    "content": "---\nname: Support\nabout: If you have questions about kube-prometheus\nlabels: kind/support\n---\n\nThis repository now has the new GitHub Discussions enabled: \nhttps://github.com/prometheus-operator/kube-prometheus/discussions\n\nPlease create a new discussion to ask for any kind of support, which is not a Bug or Feature Request.\n\nThank you for being part of this community!\n\n---\n\nWe are still happy to chat with you in the #prometheus-operator channel on Kubernetes Slack!\n\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "<!--\nWARNING: Not using this template will result in a longer review process and your change won't be visible in CHANGELOG.\n-->\n\n## Description\n\n_Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request.\nIf it fixes a bug or resolves a feature request, be sure to link to that issue._\n\n\n\n## Type of change\n\n_What type of changes does your code introduce to the kube-prometheus? Put an `x` in the box that apply._\n\n- [ ] `CHANGE` (fix or feature that would cause existing functionality to not work as expected)\n- [ ] `FEATURE` (non-breaking change which adds functionality)\n- [ ] `BUGFIX` (non-breaking change which fixes an issue)\n- [ ] `ENHANCEMENT` (non-breaking change which improves existing functionality)\n- [ ] `NONE` (if none of the other choices apply. Example, tooling, build system, CI, docs, etc.)\n\n## Changelog entry\n\n_Please put a one-line changelog entry below. Later this will be copied to the changelog file._\n\n<!-- \nYour release note should be written in clear and straightforward sentences. Most often, users aren't familiar with\nthe technical details of your PR, so consider what they need to know when you write your release note.\n\nSome brief examples of release notes:\n- Add metadataConfig field to the Prometheus CRD for configuring how remote-write sends metadata information.\n- Generate correct scraping configuration for Probes with empty or unset module parameter.\n-->\n\n```release-note\n\n```\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: gomod\n    directory: /\n    schedule:\n      interval: daily\n\n  - package-ecosystem: gomod\n    directory: /scripts/\n    schedule:\n      interval: daily\n\n  - package-ecosystem: github-actions\n    directory: /\n    schedule:\n      interval: daily\n"
  },
  {
    "path": ".github/env",
    "content": "kind-version=v0.31.0\ngolang-version=1.25\n"
  },
  {
    "path": ".github/workflows/action-lint.yaml",
    "content": "name: lint gitHub action workflows\non:\n  push:\n    paths:\n      - \".github/workflows/**\"\n  pull_request:\n    paths:\n      - \".github/workflows/**\"\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n      - name: Download actionlint\n        id: get_actionlint\n        run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/v1.7.7/scripts/download-actionlint.bash)\n        shell: bash\n      - name: Check workflow files\n        run: ${{ steps.get_actionlint.outputs.executable }} -color\n        shell: bash\n"
  },
  {
    "path": ".github/workflows/ci.yaml",
    "content": "name: ci\non:\n  - push\n  - pull_request\njobs:\n  generate:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os:\n          - macos-latest\n          - ubuntu-latest\n    name: Generate\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          persist-credentials: false\n      - name: Import environment variables from file\n        run: cat \".github/env\" >> \"$GITHUB_ENV\"\n      - uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.golang-version }}\n      - run: make --always-make generate validate && git diff --exit-code\n  check-docs:\n    runs-on: ubuntu-latest\n    name: Check Documentation formatting and links\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          persist-credentials: false\n      - name: Import environment variables from file\n        run: cat \".github/env\" >> \"$GITHUB_ENV\"\n      - uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.golang-version }}\n      - run: make check-docs\n  lint:\n    runs-on: ubuntu-latest\n    name: Jsonnet linter\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          persist-credentials: false\n      - name: Import environment variables from file\n        run: cat \".github/env\" >> \"$GITHUB_ENV\"\n      - uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.golang-version }}\n      - run: make --always-make lint\n  fmt:\n    runs-on: ubuntu-latest\n    name: Jsonnet formatter\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          persist-credentials: false\n      - name: Import environment variables from file\n        run: cat \".github/env\" >> \"$GITHUB_ENV\"\n      - uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.golang-version }}\n      - run: make --always-make fmt && git diff --exit-code\n  unit-tests:\n    runs-on: ubuntu-latest\n    name: Unit tests\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          persist-credentials: false\n      - name: Import environment variables from file\n        run: cat \".github/env\" >> \"$GITHUB_ENV\"\n      - uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.golang-version }}\n      - run: make --always-make test\n  security-audit:\n    runs-on: ubuntu-latest\n    name: Run security analysis on manifests\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          persist-credentials: false\n      - run: make --always-make kubescape\n  e2e-tests:\n    name: E2E tests\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        kind-image:\n          - \"kindest/node:v1.35.1\"\n          - \"kindest/node:v1.34.3\"\n          - \"kindest/node:v1.33.7\"\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          persist-credentials: false\n      - name: Import environment variables from file\n        run: cat \".github/env\" >> \"$GITHUB_ENV\"\n      - uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.golang-version }}\n      - name: Start kind cluster\n        uses: helm/kind-action@v1.14.0\n        with:\n          version: ${{ env.kind-version }}\n          node_image: ${{ matrix.kind-image }}\n          wait: 10s # Without default CNI, control-plane doesn't get ready until Cilium is installed\n          config: tests/e2e/kind/config.yml\n          cluster_name: e2e\n      - name: Install kube-router for NetworkPolicy support\n        run: |\n          kubectl apply -f tests/e2e/kind/kube-router.yaml\n      - name: Install kube-scheduler and kube-controller-manager services\n        run: |\n          kubectl apply -f tests/e2e/kind/kubernetesControlPlane-kubeControllerManagerPrometheusDiscoveryService.yaml && \\\n          kubectl apply -f tests/e2e/kind/kubernetesControlPlane-kubeSchedulerPrometheusDiscoveryService.yaml\n      - name: Wait for cluster to finish bootstraping\n        run: kubectl wait --for=condition=Ready pods --all --all-namespaces --timeout=300s\n      - name: Create kube-prometheus stack\n        run: |\n          kubectl create -f manifests/setup\n          until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo \"\"; done\n          kubectl create -f manifests/\n      - name: Wait for kube-prometheus stack to finish bootstraping\n        run: kubectl wait --for=condition=Ready pods --all -n monitoring --timeout=300s\n      - name: Check resources in all namespaces\n        run: kubectl get services,endpoints,pods,prometheus,alertmanager --all-namespaces\n      - name: Run tests\n        run: |\n          export KUBECONFIG=\"${HOME}/.kube/config\"\n          make test-e2e\n\n  # Added to summarize the matrix and allow easy branch protection rules setup\n  e2e-tests-result:\n    name: End-to-End Test Results\n    if: always()\n    needs:\n      - e2e-tests\n    runs-on: ubuntu-latest\n    steps:\n      - name: Mark the job as a success\n        if: needs.e2e-tests.result == 'success'\n        run: exit 0\n      - name: Mark the job as a failure\n        if: needs.e2e-tests.result != 'success'\n        run: exit 1\n"
  },
  {
    "path": ".github/workflows/stale.yaml",
    "content": "name: 'Close stale issues and PRs'\non:\n  schedule:\n    - cron: '30 3 * * *'\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/stale@v10\n        with:\n          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.'\n          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.'\n          days-before-stale: 60\n          days-before-issue-close: 120\n          days-before-pr-close: -1  # Prevent closing PRs\n          exempt-issue-labels: 'kind/feature,help wanted,kind/bug'\n          stale-issue-label: 'stale'\n          stale-pr-label: 'stale'\n          exempt-draft-pr: true\n          operations-per-run: 500\n"
  },
  {
    "path": ".github/workflows/versions.yaml",
    "content": "name: Upgrade to latest versions\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: \"37 7 * * 1\"\njobs:\n  versions:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        branch:\n          # testing will be done against last two release branches and main branch\n          - \"release-0.16\"\n          - \"release-0.17\"\n          - \"main\"\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          ref: ${{ matrix.branch }}\n      - name: Import environment variables from file\n        run: cat \".github/env\" >> \"$GITHUB_ENV\"\n      - uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.golang-version }}\n      - name: Upgrade versions\n        id: versions\n        run: |\n          export GITHUB_TOKEN=\"${{ secrets.GITHUB_TOKEN }}\"\n          # Write to temporary file to make update atomic\n          scripts/generate-versions.sh > /tmp/versions.json\n          mv /tmp/versions.json jsonnet/kube-prometheus/versions.json\n          # Display the raw diff between versions.\n          git diff\n          # Get the links to the changelogs of the updated versions and make them\n          # available to the reviewers\n          \n          # 1) Open the multiline output\n          echo \"new_changelogs<<EOF\" >> \"$GITHUB_OUTPUT\"\n          \n          # 2) Run changelog script without exiting on error\n          set +e\n          scripts/get-new-changelogs.sh >> \"$GITHUB_OUTPUT\"\n          script_rc=$?\n          set -e\n          \n          # 3) Close the multiline output\n          echo \"EOF\" >> \"$GITHUB_OUTPUT\"\n          \n          # 4) Fail if the script actually errored\n          if [ $script_rc -ne 0 ]; then\n            echo \"::error::get-new-changelogs.sh failed with exit code $script_rc\"\n            exit $script_rc\n          fi\n        if: matrix.branch == 'main'\n      - name: Update jsonnet dependencies\n        run: |\n          make update\n          make generate\n\n          # Reset jsonnetfile.lock.json if no dependencies were updated.\n          # grep returns 0 when it matches at least 1 line in the diff output.\n          if ! git diff --name-only | grep -qv 'jsonnetfile.lock.json'; then\n            git checkout -- jsonnetfile.lock.json;\n          fi\n      - name: Create Pull Request\n        uses: peter-evans/create-pull-request@v8\n        with:\n          commit-message: \"[bot] [${{ matrix.branch }}] Automated version update\"\n          title: \"[bot] [${{ matrix.branch }}] Automated version update\"\n          body: |\n            ## Description\n\n            This is an automated version and jsonnet dependencies update performed from CI.\n\n            Please review the following changelogs to make sure that we don't miss any important\n            changes before merging this PR.\n\n            ${{ steps.versions.outputs.new_changelogs }}\n\n            Configuration of the workflow is located in `.github/workflows/versions.yaml`.\n\n            ## Type of change\n\n            - [x] `NONE` (if none of the other choices apply. Example, tooling, build system, CI, docs, etc.)\n\n            ## Changelog entry\n\n            ```release-note\n\n            ```\n          team-reviewers: kube-prometheus-reviewers\n          committer: Prometheus Operator Bot <prom-op-bot@users.noreply.github.com>\n          author: Prometheus Operator Bot <prom-op-bot@users.noreply.github.com>\n          branch: automated-updates-${{ matrix.branch }}\n          delete-branch: true\n          # GITHUB_TOKEN cannot be used as it won't trigger CI in a created PR\n          # More in https://github.com/peter-evans/create-pull-request/issues/155\n          token: ${{ secrets.PROM_OP_BOT_PAT }}\n"
  },
  {
    "path": ".gitignore",
    "content": "tmp/\nminikube-manifests/\nvendor/\n./auth\n.swp\ncrdschemas/\n.mdoxcache\n\ndeveloper-workspace/gitpod/_output\ndeveloper-workspace/codespaces/kind \n"
  },
  {
    "path": ".gitpod.yml",
    "content": "image: gitpod/workspace-full\ncheckoutLocation: gitpod-k3s\ntasks: \n  - init: |\n      make --always-make\n      export PATH=\"$(pwd)/tmp/bin:${PATH}\"\n      cat > ${PWD}/.git/hooks/pre-commit <<EOF\n      #!/bin/bash\n      \n      echo \"Checking jsonnet fmt\"\n      make fmt > /dev/null 2>&1\n      echo \"Checking if manifests are correct\"\n      make generate > /dev/null 2>&1\n      \n      git diff --exit-code\n      if [[ \\$? == 1 ]]; then\n        echo \"\n      \n      This commit is being rejected because the YAML manifests are incorrect or jsonnet needs to be formatted.\"\n        echo \"Please commit your changes again!\"\n        exit 1\n      fi\n      EOF\n      chmod +x ${PWD}/.git/hooks/pre-commit\n  - name: run kube-prometheus\n    command: |\n      developer-workspace/gitpod/prepare-k3s.sh\n      developer-workspace/common/deploy-kube-prometheus.sh\n  - name: kernel dev environment\n    init: |\n      sudo apt update -y\n      sudo apt install qemu qemu-system-x86 linux-image-$(uname -r) libguestfs-tools sshpass netcat -y\n      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\"\n      sudo chmod +x /usr/bin/kubectl\n      developer-workspace/gitpod/prepare-rootfs.sh\n    command: |\n      developer-workspace/gitpod/qemu.sh\nports:\n  - port: 3000\n    onOpen: open-browser\n  - port: 9090\n    onOpen: open-browser\n  - port: 9093\n    onOpen: open-browser\nvscode:\n  extensions:\n    - heptio.jsonnet"
  },
  {
    "path": ".mdox.validate.yaml",
    "content": "version: 1\n\nvalidators:\n  # Ignore localhost links.\n  - regex: 'localhost'\n    type: \"ignore\"\n  # Ignore release links.\n  - regex: 'https:\\/\\/github\\.com\\/prometheus-operator\\/kube-prometheus\\/releases'\n    type: \"ignore\"\n  # Ignore github issue link that is timing out\n  - regex: 'https:\\/\\/github\\.com\\/kubernetes-incubator\\/kube-aws\\/issues\\/923'\n    type: \"ignore\"\n  # Twitter changed their policy and now returns 403 if not authenticated. We can guarantee this link since we own the account.\n  - regex: 'https:\\/\\/twitter.com\\/PromOperator'\n    type: \"ignore\"\n  # the www.weave.works domain returns 404 for many pages.\n  # Ignoring for now but we need remove the related content if it persists.\n  - regex: 'https:\\/\\/www.weave.works.*'\n    type: \"ignore\"\n  # StackOverflow returns 403 for automated requests.\n  - regex: 'https:\\/\\/stackoverflow.com.*'\n    type: \"ignore\"\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "## release-0.17 / 2026-03-19\n\n* [CHANGE] Remove `alertmanagerName` and `thanosSelector` configuration options from `prometheus.libsonnet`. [#2755](https://github.com/prometheus-operator/kube-prometheus/pull/2755)\n* [CHANGE] Migrate service discovery to EndpointSlices. [#2752](https://github.com/prometheus-operator/kube-prometheus/pull/2752)\n* [CHANGE] Alertmanager: select AlertmanagerConfig CRs within its own namespace by default. [#2747](https://github.com/prometheus-operator/kube-prometheus/pull/2747)\n* [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)\n* [BUGFIX] Add EndpointSlices RBAC to all-namespaces addon. [#2760](https://github.com/prometheus-operator/kube-prometheus/pull/2760)\n* [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)\n\n## release-0.16 / 2025-08-28\n\n* [ENHANCEMENT] Add common labels to blackbox-exporter ClusterRole. [#2667](https://github.com/prometheus-operator/kube-prometheus/pull/2667)\n* [ENHANCEMENT] Add labels to AWS VPC CNI Service and ServiceMonitor. [#2668](https://github.com/prometheus-operator/kube-prometheus/pull/2668)\n* [ENHANCEMENT] Add component label to Kubernetes control-plane resources. [#2669](https://github.com/prometheus-operator/kube-prometheus/pull/2669)\n* [CHANGE] AKS platform: change Service name and `job` label. [#2665](https://github.com/prometheus-operator/kube-prometheus/pull/2665)\n\n## release-0.15 / 2025-06-04\n\n* [FEATURE] Add config option for storage to Prometheus and Alertmanager servers[#2651](https://github.com/prometheus-operator/kube-prometheus/pull/2651)\n* [ENHANCEMENT] Reduce apiserver metric cardinality [#2531](https://github.com/prometheus-operator/kube-prometheus/pull/2531)\n* [BUGFIX] Fix port allocation for node-exporter [#2627](https://github.com/prometheus-operator/kube-prometheus/pull/2627)\n* [BUGFIX] Fix procfs location for node-exporter [#2549](https://github.com/prometheus-operator/kube-prometheus/pull/2549)\n* [BUGFIX] Drop `process_start_time_seconds` from Kubelet slis endpoint [#2530](https://github.com/prometheus-operator/kube-prometheus/pull/2530)\n\n## release-0.14 / 2024-09-12\n\n* [CHANGE] Prefer new form for `kube_node_status_capacity_pods` metric [#2269](https://github.com/prometheus-operator/kube-prometheus/pull/2269)\n* [CHANGE] Add runAsGroup to all components [#2424](https://github.com/prometheus-operator/kube-prometheus/pull/2424)\n* [FEATURE] Add support for ScrapeConfig [#2232](https://github.com/prometheus-operator/kube-prometheus/pull/2232)\n* [FEATURE] Add Kubernetes components SLI metrics [#2496](https://github.com/prometheus-operator/kube-prometheus/pull/2496)\n* [FEATURE] Add monitor and rules resources to user-facing roles add-on [#2238](https://github.com/prometheus-operator/kube-prometheus/pull/2238)\n* [BUGFIX] Add thanos-sidecar metrics port to Prometheus Service and NetworkPolicy [#2330](https://github.com/prometheus-operator/kube-prometheus/pull/2330)\n* [ENHANCEMENT] Add ability to inject Secrets into alertmanager [#2206](https://github.com/prometheus-operator/kube-prometheus/pull/2206)\n* [ENHANCEMENT] Add securityContext items and Pod security labels [#2178](https://github.com/prometheus-operator/kube-prometheus/pull/2178)\n\n## release-0.13 / 2023-08-31\n\n* [CHANGE] Added a AKS platform to `platforms.libsonnet` [#1997](https://github.com/prometheus-operator/kube-prometheus/pull/1997)\n* [CHANGE] Disable btrfs collector by default [#2074](https://github.com/prometheus-operator/kube-prometheus/pull/2074)\n* [CHANGE] Enable Multi Cluster alerts by default [#2099](https://github.com/prometheus-operator/kube-prometheus/pull/2099)\n* [FEATURE] Create dedicated Service to expose CoreDNS metric [#2107](https://github.com/prometheus-operator/kube-prometheus/pull/2107)\n* [FEATURE] Add Windows support using Hostprocess instead of static_configs [#2048](https://github.com/prometheus-operator/kube-prometheus/pull/2048)\n* [BUGFIX] Fix a compilation error when building the custom-metrics addon [#1996](https://github.com/prometheus-operator/kube-prometheus/pull/1996)\n* [BUGFIX] Add `prometheus-adapter` in Prometheus's NetworkPolicy [#1982](https://github.com/prometheus-operator/kube-prometheus/pull/1982)\n* [BUGFIX] Fix namespace specified in manifest non-namespaced resources [#2158](https://github.com/prometheus-operator/kube-prometheus/pull/2158)\n* [BUGFIX] Override ServiceAccount, Role and ClusterRole names in RoleBinding and ClusterRoleBinding [#2135](https://github.com/prometheus-operator/kube-prometheus/pull/2135)\n* [BUGFIX] Remove deprecated `--logtostderr` argument of prometheus-adapter [#2185](https://github.com/prometheus-operator/kube-prometheus/pull/2185)\n* [BUGFIX] Fix alertmanager external config example [#1891](https://github.com/prometheus-operator/kube-prometheus/pull/1891)\n* [ENHANCEMENT] Add startupProbe to prometheus-adapter [#2029](https://github.com/prometheus-operator/kube-prometheus/pull/2029)\n* [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)\n* [ENHANCEMENT] Modify control plane ServiceMonitors to be compatible with Argo [#2041](https://github.com/prometheus-operator/kube-prometheus/pull/2041)\n* [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)\n\n## release-0.12 / 2023-01-19\n\n* [CHANGE] Updates Prometheus Adapater version to 0.10.0 [#1865](https://github.com/prometheus-operator/kube-prometheus/pull/1865)\n* [FEATURE] Added a AKS platform [#1869](https://github.com/prometheus-operator/kube-prometheus/pull/1869)\n* [BUGFIX] Update Pyrra to 0.4.2 [#1800](https://github.com/prometheus-operator/kube-prometheus/pull/1800)\n* [BUGFIX] Jsonnet: enable automountServiceAccountToken for prometheus service account [#1808](https://github.com/prometheus-operator/kube-prometheus/pull/1808)\n* [BUGFIX] Fix diskDeviceSelector regex for aks and eks [#1810](https://github.com/prometheus-operator/kube-prometheus/pull/1810)\n* [BUGFIX] Set path.udev.data Argument of Node Exporter [#1913](https://github.com/prometheus-operator/kube-prometheus/pull/1913)\n* [BUGFIX] Include RAID device md.* in disk seletor [#1945](https://github.com/prometheus-operator/kube-prometheus/pull/1945)\n* [ENHANCEMENT] Prometheus-adapter: add prefix option to config for container metrics [#1844](https://github.com/prometheus-operator/kube-prometheus/pull/1844)\n* [ENHANCEMENT] Switch kube-state-metrics registry to registry.k8s.io [#1914](https://github.com/prometheus-operator/kube-prometheus/pull/1914)\n* [ENHANCEMENT] Node Exporter: add parameter for ignored network devices [#1887](https://github.com/prometheus-operator/kube-prometheus/pull/1887)\n\n## release-0.11 / 2022-06-15\n\n* [CHANGE] Disable injecting unnecessary variables allowing access to k8s API [#1591](https://github.com/prometheus-operator/kube-prometheus/pull/1591)\n* [FEATURE] Add grafana-mixin [#1458](https://github.com/prometheus-operator/kube-prometheus/pull/1458)\n* [FEATURE] Add example usage of prometheus-agent [#1472](https://github.com/prometheus-operator/kube-prometheus/pull/1472)\n* [FEATURE] Add Pyrra as (optional) component [#1667](https://github.com/prometheus-operator/kube-prometheus/pull/1667)\n* [ENHANCEMENT] Adds NetworkPolicies to all components of Kube-prometheus [#1650](https://github.com/prometheus-operator/kube-prometheus/pull/1650)\n* [ENHANCEMENT] Scan generated manifests with kubescape in CI [#1584](https://github.com/prometheus-operator/kube-prometheus/pull/1584)\n* [ENHANCEMENT] Explicitly declare allowPrivilegeEscalation to false in all components [#1593](https://github.com/prometheus-operator/kube-prometheus/pull/1593)\n* [ENHANCEMENT] Forbid write access to root filesystem [#1600](https://github.com/prometheus-operator/kube-prometheus/pull/1600)\n* [ENHANCEMENT] Drop Linux capabilities, , just keeping CAP_SYS_TIME for node-exporter [#1610](https://github.com/prometheus-operator/kube-prometheus/pull/1610)\n* [ENHANCEMENT] Remove hostPort from node-export daemonset [#1612](https://github.com/prometheus-operator/kube-prometheus/pull/1612)\n* [ENHANCEMENT] Add priorityClassName as system-cluster-critical for node_exporter [#1649](https://github.com/prometheus-operator/kube-prometheus/pull/1649)\n* [ENHANCEMENT] Added custom overrides for kube-rbac-proxy-self [#1637](https://github.com/prometheus-operator/kube-prometheus/pull/1637)\n* [ENHANCEMENT] Adds readinessProbe and livenessProbe to prometheus-adapter jsonnet [#1696](https://github.com/prometheus-operator/kube-prometheus/pull/1696)\n* [BUGFIX] Update kubeadm integration of kube-prometheus [#1569](https://github.com/prometheus-operator/kube-prometheus/pull/1569)\n* [BUGFIX] Add projected volumes permission to addon/podsecuritypolicie [#1572](https://github.com/prometheus-operator/kube-prometheus/pull/1572)\n* [BUGFIX] Hide namespace for prometheus clusterRole and clusterRolebinding [#1566](https://github.com/prometheus-operator/kube-prometheus/pull/1566)\n* [BUGFIX] Fix accidentally broken thanosSelector after #1543 [#1556](https://github.com/prometheus-operator/kube-prometheus/pull/1556)\n* [BUGFIX] Jsonnet: filter out kube-proxy alerts when kube-proxy is disabled [#1609](https://github.com/prometheus-operator/kube-prometheus/pull/1609)\n* [BUGFIX] Sanitize regex denylist in ksm-lite addon [#1613](https://github.com/prometheus-operator/kube-prometheus/pull/1613)\n* [BUGFIX] Sanitize all regex denylist in ksm-lite addon [#1614](https://github.com/prometheus-operator/kube-prometheus/pull/1614)\n* [BUGFIX] Add extra-volume mount for plugins downloads [#1624](https://github.com/prometheus-operator/kube-prometheus/pull/1624)\n* [BUGFIX] Added allowedCapabilities to node-exporter psp [#1642](https://github.com/prometheus-operator/kube-prometheus/pull/1642)\n* [BUGFIX] Fix cluster:node_cpu:ratio query [#1628](https://github.com/prometheus-operator/kube-prometheus/pull/1628)\n* [BUGFIX] Removed CAP_ from node-exporter daemonset [#1647](https://github.com/prometheus-operator/kube-prometheus/pull/1647)\n* [BUGFIX] Update PodMonitor for kube-proxy [#1630](https://github.com/prometheus-operator/kube-prometheus/pull/1630)\n* [BUGFIX] Adds port name to prometheus-adapter [#1701](https://github.com/prometheus-operator/kube-prometheus/pull/1701)\n* [BUGFIX] Fix grafana network access [#1721](https://github.com/prometheus-operator/kube-prometheus/pull/1721)\n* [BUGFIX] Fix networkpolicies-disabled addon [#1724](https://github.com/prometheus-operator/kube-prometheus/pull/1724)\n* [BUGFIX] Adjust NodeFilesystemSpaceFillingUp thresholds according default kubelet GC behavior [#1729](https://github.com/prometheus-operator/kube-prometheus/pull/1729)\n* [BUGFIX] Fix problems when enabling eks platform patch [#1675](https://github.com/prometheus-operator/kube-prometheus/pull/1675)\n* [BUGFIX] Access requests to sidecar from thanos-query [#1730](https://github.com/prometheus-operator/kube-prometheus/pull/1730)\n* [BUGFIX] Fix prometheus namespace connection for addons/pyrra [#1734](https://github.com/prometheus-operator/kube-prometheus/pull/1734)\n\n## release-0.10 / 2021-12-17\n\n* [CHANGE] Adjust node filesystem space filling up warning threshold to 20% [#1357](https://github.com/prometheus-operator/kube-prometheus/pull/1357)\n* [CHANGE] Always generate grafana-config secret [#1373](https://github.com/prometheus-operator/kube-prometheus/pull/1373)\n* [CHANGE] Make filesystem ignored mount points configurable for node-exporter [#1376](https://github.com/prometheus-operator/kube-prometheus/pull/1376)\n* [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)\n* [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)\n* [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)\n* [CHANGE] Remove \"app\" label selector deprecated by Prometheus-operator [#1420](https://github.com/prometheus-operator/kube-prometheus/pull/1420)\n* [CHANGE] Use recommended instance label for Prometheus/Alertmanager resources [#1520](https://github.com/prometheus-operator/kube-prometheus/pull/1520)\n* [CHANGE] Drop deprecated apiserver_longrunning_gauge and apiserver_registered_watchers metrics [#1553](https://github.com/prometheus-operator/kube-prometheus/pull/1553)\n* [CHANGE] Drop deprecated coredns_cache_misses_total [#1553](https://github.com/prometheus-operator/kube-prometheus/pull/1553)\n* [ENHANCEMENT] Add support for LDAP authentication in Grafana [#1455](https://github.com/prometheus-operator/kube-prometheus/pull/1445)\n* [ENHANCEMENT] Include rewritten kubernetes-grafana for easier usage of new library features [#1450](https://github.com/prometheus-operator/kube-prometheus/pull/1450)\n* [ENHANCEMENT] Specify default container in node-exporter pod [#1462](https://github.com/prometheus-operator/kube-prometheus/pull/1462)\n* [ENHANCEMENT] Make metadata consistent across objects in the same component [#1471](https://github.com/prometheus-operator/kube-prometheus/pull/1471)\n* [ENHANCEMENT] Establish convention for default field types [#1475](https://github.com/prometheus-operator/kube-prometheus/pull/1475)\n* [ENHANCEMENT] Exclude k3s containerd mountpoints [#1497](https://github.com/prometheus-operator/kube-prometheus/pull/1497)\n* [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)\n* [ENHANCEMENT] Deprecate `thanosSelector` and expose `mixin._config.thanos` config variable for thanos sidecar [#1543](https://github.com/prometheus-operator/kube-prometheus/pull/1543)\n* [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)\n* [FEATURE] Support scraping config-reloader sidecar for Prometheus and AlertManager StatefulSets [#1344](https://github.com/prometheus-operator/kube-prometheus/pull/1344)\n* [FEATURE] Expose prometheus alerting configuration in $.values.prometheus configuration [#1476](https://github.com/prometheus-operator/kube-prometheus/pull/1476)\n* [BUGFIX] Remove deprecated policy/v1beta1 Kubernetes API [#1433](https://github.com/prometheus-operator/kube-prometheus/pull/1433)\n* [BUGFIX] Fix prometheus URL in prometheus-adapter [#1463](https://github.com/prometheus-operator/kube-prometheus/pull/1463)\n* [BUGFIX] Always use proper values scope for namespace in addons [#1518](https://github.com/prometheus-operator/kube-prometheus/pull/1518)\n* [BUGFIX] Fix default empty groups for k8s PrometheusRule [#1534](https://github.com/prometheus-operator/kube-prometheus/pull/1534)\n\n## release-0.9 / 2021-08-19\n\n* [CHANGE] Test against Kubernetes 1.21 and 1,22. #1161 #1337\n* [CHANGE] Drop cAdvisor metrics without (pod, namespace) label pairs. #1250\n* [CHANGE] Excluded deprecated `etcd_object_counts` metric. #1337\n* [FEATURE] Add PodDisruptionBudget to prometheus-adapter. #1136\n* [FEATURE] Add support for feature flags in Prometheus. #1129\n* [FEATURE] Add env parameter for grafana component. #1171\n* [FEATURE] Add gitpod deployment of kube-prometheus on k3s. #1211\n* [FEATURE] Add resource requests and limits to prometheus-adapter container. #1282\n* [FEATURE] Add PodMonitor for kube-proxy. #1230\n* [FEATURE] Turn AWS VPC CNI into a control plane add-on. #1307\n* [ENHANCEMENT] Export anti-affinity addon. #1114\n* [ENHANCEMENT] Allow changing configmap-reloader, grafana, and kube-rbac-proxy images in $.values.common.images. #1123 #1124 #1125\n* [ENHANCEMENT] Add automated version upgrader. #1166\n* [ENHANCEMENT] Improve all-namespace addon. #1131\n* [ENHANCEMENT] Add example of running without grafana deployment. #1201\n* [ENHANCEMENT] Import managed-cluster addon for the EKS platform. #1205\n* [ENHANCEMENT] Automatically update jsonnet dependencies. #1220\n* [ENHANCEMENT] Adapt kube-prometheus to changes to ovn veth interfaces names. #1224\n* [ENHANCEMENT] Add example release-0.3 to release-0.8 migration to docs. #1235\n* [ENHANCEMENT] Consolidate intervals used in prometheus-adapter CPU queries. #1231\n* [ENHANCEMENT] Create dashboardDefinitions if rawDashboards or folderDashboards are specified. #1255\n* [ENHANCEMENT] Relabel instance with node name for CNI DaemonSet on EKS. #1259\n* [ENHANCEMENT] Update doc on Prometheus rule updates since release 0.8. #1253\n* [ENHANCEMENT] Point runbooks to https://runbooks.prometheus-operator.dev. #1267\n* [ENHANCEMENT] Allow setting of kubeRbacProxyMainResources in kube-state-metrics. #1257\n* [ENHANCEMENT] Automate release branch updates. #1293 #1303\n* [ENHANCEMENT] Create Thanos Sidecar rules separately from Prometheus ones. #1308\n* [ENHANCEMENT] Allow using newer jsonnet-bundler dependency resolution when using windows addon. #1310\n* [ENHANCEMENT] Prometheus ruleSelector defaults to all rules.\n* [BUGFIX] Fix kube-state-metrics metric denylist regex pattern. #1146\n* [BUGFIX] Fix missing resource config in blackbox exporter. #1148\n* [BUGFIX] Fix adding private repository. #1169\n* [BUGFIX] Fix kops selectors for scheduler, controllerManager and kube-dns. #1164\n* [BUGFIX] Fix scheduler and controller selectors for Kubespray. #1142\n* [BUGFIX] Fix label selector for coredns ServiceMonitor. #1200\n* [BUGFIX] Fix name for blackbox-exporter PodSecurityPolicy. #1213\n* [BUGFIX] Fix ingress path rules for networking.k8s.io/v1. #1212\n* [BUGFIX] Disable insecure cypher suites for prometheus-adapter. #1216\n* [BUGFIX] Fix CNI metrics relabelings on EKS. #1277\n* [BUGFIX] Fix node-exporter ignore list for OVN. #1283\n* [BUGFIX] Revert back to awscni_total_ip_addresses-based alert on EKS. #1292\n* [BUGFIX] Allow passing `thanos: {}` to prometheus configuration. #1325\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nThis project is licensed under the [Apache 2.0 license](LICENSE) and accept\ncontributions via GitHub pull requests. This document outlines some of the\nconventions on development workflow, commit message formatting, contact points\nand other resources to make it easier to get your contribution accepted.\n\nTo maintain a safe and welcoming community, all participants must adhere to the\nproject's [Code of Conduct](code-of-conduct.md).\n\n## Community\n\nThe project is developed in the open. Here are some of the channels we use to communicate and contribute:\n\n[**Kubernetes Slack**](https://slack.k8s.io/): [#prometheus-operator](https://kubernetes.slack.com/archives/CFFDS2Z7F) -\nGeneral discussions channel\n\n[**Kubernetes Slack**](https://slack.k8s.io/): [#prometheus-operator-dev](https://kubernetes.slack.com/archives/C01B03QCSMN) -\nChannel used for project developers discussions\n\n**Discussion forum**: [GitHub discussions](https://github.com/prometheus-operator/kube-prometheus/discussions)\n\n**Twitter**: [@PromOperator](https://twitter.com/PromOperator)\n\n**GitHub**: To file bugs and feature requests. For questions and discussions use the GitHub discussions. Generally,\nthe other community channels listed here are best suited to get support or discuss overarching topics.\n\nPlease avoid emailing maintainers directly.\n\nWe host publicy bi-weekly meetings focused on project development and contributions. It’s meant for developers\nand maintainers to meet and get unblocked, pair review, and discuss development aspects of this project and related\nprojects (e.g kubernetes-mixin). The document linked below contains all the details, including how to register.\n\n**Office Hours**: [Prometheus Operator & Kube-prometheus Contributor Office Hours](https://docs.google.com/document/d/1-fjJmzrwRpKmSPHtXN5u6VZnn39M28KqyQGBEJsqUOk)\n\n## Getting Started\n\n- Fork the repository on GitHub\n- Read the [README](README.md) for build and test instructions\n- Play with the project, submit bug fixes, submit patches!\n\n## Contribution Flow\n\nThis is a rough outline of what a contributor's workflow looks like:\n\n- Create a topic branch from where you want to base your work (usually `main`).\n- Make commits of logical units.\n- Make sure your commit messages are in the proper format (see below).\n- Push your changes to a topic branch in your fork of the repository.\n- Make sure the tests pass, and add any new tests as appropriate.\n- Submit a pull request to the original repository.\n\nThanks for your contributions!\n\n### Generated Files\n\nAll `.yaml` files in the `/manifests` folder are generated via\n[Jsonnet](https://jsonnet.org/). Contributing changes will most likely include\nthe following process:\n\n1. Make your changes in the respective `*.jsonnet` or `*.libsonnet` file.\n2. Commit your changes (This is currently necessary due to our vendoring\n   process. This is likely to change in the future).\n3. Generate dependent `*.yaml` files: `make generate`\n4. Commit the generated changes.\n\n### Format of the Commit Message\n\nWe follow a rough convention for commit messages that is designed to answer two\nquestions: what changed and why. The subject line should feature the what and\nthe body of the commit should describe the why.\n\n```\nscripts: add the test-cluster command\n\nthis uses tmux to setup a test cluster that you can easily kill and\nstart for debugging.\n\nFixes #38\n```\n\nThe format can be described more formally as follows:\n\n```\n<subsystem>: <what changed>\n<BLANK LINE>\n<why this change was made>\n<BLANK LINE>\n<footer>\n```\n\nThe first line is the subject and should be no longer than 70 characters, the\nsecond line is always blank, and other lines should be wrapped at 80 characters.\nThis allows the message to be easier to read on GitHub as well as in various\ngit tools.\n"
  },
  {
    "path": "LICENSE",
    "content": "Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n"
  },
  {
    "path": "Makefile",
    "content": "SHELL=/bin/bash -o pipefail\n\nBIN_DIR?=$(shell pwd)/tmp/bin\n\nMDOX_BIN=$(BIN_DIR)/mdox\nJB_BIN=$(BIN_DIR)/jb\nGOJSONTOYAML_BIN=$(BIN_DIR)/gojsontoyaml\nJSONNET_BIN=$(BIN_DIR)/jsonnet\nJSONNETLINT_BIN=$(BIN_DIR)/jsonnet-lint\nJSONNETFMT_BIN=$(BIN_DIR)/jsonnetfmt\nKUBECONFORM_BIN=$(BIN_DIR)/kubeconform\nKUBESCAPE_BIN=~/.kubescape/bin/kubescape\nTOOLING=$(JB_BIN) $(GOJSONTOYAML_BIN) $(JSONNET_BIN) $(JSONNETLINT_BIN) $(JSONNETFMT_BIN) $(KUBECONFORM_BIN) $(MDOX_BIN)\n\nJSONNETFMT_ARGS=-n 2 --max-blank-lines 2 --string-style s --comment-style s\n\nMDOX_VALIDATE_CONFIG?=.mdox.validate.yaml\nMD_FILES_TO_FORMAT=$(shell find docs developer-workspace examples experimental jsonnet manifests -name \"*.md\") $(shell ls *.md)\n\nKUBESCAPE_THRESHOLD=1\n\nall: generate fmt test docs\n\n.PHONY: clean\nclean:\n\t# Remove all files and directories ignored by git.\n\tgit clean -Xfd .\n\n.PHONY: docs\ndocs: $(MDOX_BIN) $(shell find examples) build.sh example.jsonnet\n\t@echo \">> formatting and local/remote links\"\n\t$(MDOX_BIN) fmt --soft-wraps -l --links.localize.address-regex=\"https://prometheus-operator.dev/.*\" --links.validate.config-file=$(MDOX_VALIDATE_CONFIG) $(MD_FILES_TO_FORMAT)\n\n.PHONY: check-docs\ncheck-docs: $(MDOX_BIN) $(shell find examples) build.sh example.jsonnet\n\t@echo \">> checking formatting and local/remote links\"\n\t$(MDOX_BIN) fmt --soft-wraps --check -l --links.localize.address-regex=\"https://prometheus-operator.dev/.*\" --links.validate.config-file=$(MDOX_VALIDATE_CONFIG) $(MD_FILES_TO_FORMAT)\n\n.PHONY: generate\ngenerate: manifests\n\nmanifests: examples/kustomize.jsonnet $(GOJSONTOYAML_BIN) vendor\n\t./build.sh $<\n\nvendor: $(JB_BIN) jsonnetfile.json jsonnetfile.lock.json\n\trm -rf vendor\n\t$(JB_BIN) install\n\ncrdschemas: vendor\n\t./scripts/generate-schemas.sh\n\n.PHONY: update\nupdate: $(JB_BIN)\n\t$(JB_BIN) update\n\n.PHONY: validate\nvalidate: validate-1.33 validate-1.34 validate-1.35\n\nvalidate-1.33:\n\tKUBE_VERSION=1.33.9 $(MAKE) kubeconform\n\nvalidate-1.34:\n\tKUBE_VERSION=1.34.5 $(MAKE) kubeconform\n\nvalidate-1.35:\n\tKUBE_VERSION=1.35.2 $(MAKE) kubeconform\n\n.PHONY: kubeconform\nkubeconform: crdschemas manifests $(KUBECONFORM_BIN)\n\t$(KUBECONFORM_BIN) -kubernetes-version $(KUBE_VERSION) -schema-location 'default' -schema-location 'crdschemas/{{ .ResourceKind }}.json' -skip CustomResourceDefinition manifests/\n\n.PHONY: kubescape\nkubescape: $(KUBESCAPE_BIN) ## Runs a security analysis on generated manifests - failing if risk score is above threshold percentage 't'\n\t$(KUBESCAPE_BIN) scan framework nsa --compliance-threshold $(KUBESCAPE_THRESHOLD) -v --exceptions 'kubescape-exceptions.json' manifests/\n\n$(KUBESCAPE_BIN):\n\tcurl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash\n\n.PHONY: fmt\nfmt: $(JSONNETFMT_BIN)\n\tfind . -name 'vendor' -prune -o -name '*.libsonnet' -print -o -name '*.jsonnet' -print | \\\n\t\txargs -n 1 -- $(JSONNETFMT_BIN) $(JSONNETFMT_ARGS) -i\n\n.PHONY: lint\nlint: $(JSONNETLINT_BIN) vendor\n\tfind jsonnet/ -name 'vendor' -prune -o -name '*.libsonnet' -print -o -name '*.jsonnet' -print | \\\n\t\txargs -n 1 -- $(JSONNETLINT_BIN) -J vendor\n\n.PHONY: test\ntest: $(JB_BIN)\n\t$(JB_BIN) install\n\t./scripts/test.sh\n\n.PHONY: test-e2e\ntest-e2e:\n\tgo test -timeout 55m -v ./tests/e2e -count=1\n\n$(BIN_DIR):\n\tmkdir -p $(BIN_DIR)\n\n$(TOOLING): $(BIN_DIR)\n\t@echo Installing tools from scripts/tools.go\n\t@cd scripts && cat tools.go | grep _ | awk -F'\"' '{print $$2}' | xargs -tI % go build -modfile=go.mod -o $(BIN_DIR) %\n\n.PHONY: deploy\ndeploy:\n\t./developer-workspace/codespaces/prepare-kind.sh\n\t./developer-workspace/common/deploy-kube-prometheus.sh\n"
  },
  {
    "path": "README.md",
    "content": "# kube-prometheus\n\n[![Build Status](https://github.com/prometheus-operator/kube-prometheus/workflows/ci/badge.svg)](https://github.com/prometheus-operator/kube-prometheus/actions)\n[![Slack](https://img.shields.io/badge/join%20slack-%23prometheus--operator-brightgreen.svg)](http://slack.k8s.io/)\n\n> [!WARNING]\n> Everything is experimental and may change significantly at any time.\n\nThis repository collects Kubernetes manifests, [Grafana](http://grafana.com/) dashboards, and [Prometheus rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with [Prometheus](https://prometheus.io/) using the Prometheus Operator.\n\nThe content of this project is written in [jsonnet](http://jsonnet.org/). This project could both be described as a package as well as a library.\n\nComponents included in this package:\n\n* The [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator)\n* Highly available [Prometheus](https://prometheus.io/)\n* Highly available [Alertmanager](https://github.com/prometheus/alertmanager)\n* [Prometheus node-exporter](https://github.com/prometheus/node_exporter)\n* [Prometheus blackbox-exporter](https://github.com/prometheus/blackbox_exporter)\n* [Prometheus Adapter for Kubernetes Metrics APIs](https://github.com/kubernetes-sigs/prometheus-adapter)\n* [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics)\n* [Grafana](https://grafana.com/)\n\nThis stack is meant for cluster monitoring, so it is pre-configured to collect metrics from all Kubernetes components. In addition to that it delivers a default set of dashboards and alerting rules. Many of the useful dashboards and alerts come from the [kubernetes-mixin project](https://github.com/kubernetes-monitoring/kubernetes-mixin), similar to this project it provides composable jsonnet as a library for users to customize to their needs.\n\n## Prerequisites\n\nYou will need a Kubernetes cluster, that's it! By default it is assumed, that the kubelet uses token authentication and authorization, as otherwise Prometheus needs a client certificate, which gives it full access to the kubelet, rather than just the metrics. Token authentication and authorization allows more fine grained and easier access control.\n\nThis means the kubelet configuration must contain these flags:\n\n* `--authentication-token-webhook=true` This flag enables, that a `ServiceAccount` token can be used to authenticate against the kubelet(s). This can also be enabled by setting the kubelet configuration value `authentication.webhook.enabled` to `true`.\n* `--authorization-mode=Webhook` This flag enables, that the kubelet will perform an RBAC request with the API to determine, whether the requesting entity (Prometheus in this case) is allowed to access a resource, in specific for this project the `/metrics` endpoint. This can also be enabled by setting the kubelet configuration value `authorization.mode` to `Webhook`.\n\nThis stack provides [resource metrics](https://github.com/kubernetes/metrics#resource-metrics-api) by deploying\nthe [Prometheus Adapter](https://github.com/kubernetes-sigs/prometheus-adapter).\nThis adapter is an Extension API Server and Kubernetes needs to be have this feature enabled, otherwise the adapter has\nno effect, but is still deployed.\n\n## Compatibility\n\nThe following Kubernetes versions are supported and work as we test against these versions in their respective branches. But note that other versions might work!\n\n> [!NOTE]\n> In CI we will be testing only last two releases and main branch on a regular basis.\n\n| kube-prometheus stack                                                                      | Kubernetes 1.31 | Kubernetes 1.32 | Kubernetes 1.33 | Kubernetes 1.34 | Kubernetes 1.35 |\n|--------------------------------------------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|\n| [`release-0.15`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.15) | ✔               | ✔               | ✔               | x               | x               |\n| [`release-0.16`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.16) | x               | ✔               | ✔               | ✔               | x               |\n| [`release-0.17`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.17) | x               | x               | ✔               | ✔               | ✔               |\n| [`main`](https://github.com/prometheus-operator/kube-prometheus/tree/main)                 | x               | x               | ✔               | ✔               | ✔               |\n\n## Quickstart\n\nThis project is intended to be used as a library (i.e. the intent is not for you to create your own modified copy of this repository).\n\nThough for a quickstart a compiled version of the Kubernetes [manifests](manifests) generated with this library (specifically with `example.jsonnet`) is checked into this repository in order to try the content out quickly. To try out the stack un-customized run:\n\n* Create the monitoring stack using the config in the `manifests` directory:\n\n  ```shell\n  # Create the namespace and CRDs, and then wait for them to be available before creating the remaining resources\n  # Note that due to some CRD size we are using kubectl server-side apply feature which is generally available since kubernetes 1.22.\n  # If you are using previous kubernetes versions this feature may not be available and you would need to use kubectl create instead.\n  kubectl apply --server-side -f manifests/setup\n  kubectl wait \\\n      --for condition=Established \\\n      --all CustomResourceDefinition \\\n      --namespace=monitoring\n  kubectl apply -f manifests/\n  ```\n\nWe create the namespace and CustomResourceDefinitions first to avoid race conditions when deploying the monitoring components.\nAlternatively, the resources in both folders can be applied with a single command\n`kubectl apply --server-side -f manifests/setup -f manifests`, but it may be necessary to run the command multiple times for all components to\nbe created successfully.\n\n* To teardown the stack:\n\n  ```shell\n  kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup\n  ```\n\nThe [official documentation](http://prometheus-operator.dev/docs/getting-started/installation/) contains the full version of this quick-start guide, and includes [instructions](https://prometheus-operator.dev/kube-prometheus/kube/access-ui/) on how to access Prometheus, AlertManager, and Grafana.\n\n### minikube\n\nTo try out this stack, start [minikube](https://github.com/kubernetes/minikube) with the following command:\n\n```shell\nminikube delete && minikube start --container-runtime=containerd --kubernetes-version=v1.33.1 --memory=6g --bootstrapper=kubeadm --extra-config=kubelet.authentication-token-webhook=true --extra-config=kubelet.authorization-mode=Webhook --extra-config=scheduler.bind-address=0.0.0.0 --extra-config=controller-manager.bind-address=0.0.0.0\n```\n\nThe kube-prometheus stack includes a resource metrics API server, so the metrics-server addon is not necessary. Ensure the metrics-server addon is disabled on minikube:\n\n```shell\nminikube addons disable metrics-server\n```\n\n## Getting started\n\nBefore deploying kube-prometheus in a production environment, read:\n\n1. [Customizing kube-prometheus](docs/customizing.md)\n2. [Customization examples](docs/customizations)\n3. [Accessing Graphical User Interfaces](docs/access-ui.md)\n4. [Troubleshooting kube-prometheus](docs/troubleshooting.md)\n\n## Documentation\n\n1. [Continuous Delivery](examples/continuous-delivery)\n2. [Update to new version](docs/update.md)\n3. For more documentation on the project refer to `docs/` directory.\n\n## Contributing\n\nTo contribute to kube-prometheus, refer to [Contributing](CONTRIBUTING.md).\n\n## Join the discussion\n\nIf you have any questions or feedback regarding kube-prometheus, join the [kube-prometheus discussion](https://github.com/prometheus-operator/kube-prometheus/discussions). Alternatively, consider joining [#prometheus-operator](https://kubernetes.slack.com/archives/CFFDS2Z7F) slack channel or project's bi-weekly [Contributor Office Hours](https://docs.google.com/document/d/1-fjJmzrwRpKmSPHtXN5u6VZnn39M28KqyQGBEJsqUOk/edit#).\n\n## License\n\nApache License 2.0, see [LICENSE](https://github.com/prometheus-operator/kube-prometheus/blob/main/LICENSE).\n"
  },
  {
    "path": "RELEASE.md",
    "content": "# Release schedule\n\nkube-prometheus will follow the [Kubernetes release schedule](https://kubernetes.io/releases).\nFor every new Kubernetes release, there will be a corresponding minor release of\nkube-prometheus, although it may not be immediate.\n\nWe do not guarantee backports from the `main` branch to older release branches.\n\n| Release | Kubernetes Version | Release shepherd                        |\n|---------|--------------------|-----------------------------------------|\n| v0.18.0 | 1.36               | **searching for volunteer**             |\n| v0.17.0 | 1.35               | Jayapriya Pai (Github:@slashpai)        |\n| v0.16.0 | 1.34               | Simon Pasquier (GitHub: @simonpasquier) |\n| v0.15.0 | 1.33               | Jayapriya Pai (Github: @slashpai)       |\n| v0.14.0 | 1.31               | Philip Gough (GitHub: @philipgough)     |\n| v0.13.0 | 1.28               | Philip Gough (GitHub: @philipgough)     |\n\n## How to cut a new release\n\n> This guide is strongly based on the [prometheus-operator release\n> instructions](https://github.com/prometheus-operator/prometheus-operator/blob/master/RELEASE.md).\n\n## Branch management and versioning strategy\n\nWe use [Semantic Versioning](http://semver.org/).\n\nWe maintain a separate branch for each minor release, named\n`release-<major>.<minor>`, e.g. `release-1.1`, `release-2.0`.\n\nThe usual flow is to merge new features, changes and bug fixes into the `main` branch.\nThe decision to backport bugfixes into release branches is made on a case-by-case basis.\nMaintaining the release branches for older minor releases is best-effort.\n\n## Update components version\n\nEvery release of kube-prometheus should include the latest versions of each\ncomponent. Updating them is automated via a CI job that can be triggered\nmanually from this\n[workflow](https://github.com/prometheus-operator/kube-prometheus/actions/workflows/versions.yaml).\n\nOnce the workflow is completed, the prometheus-operator bot will create some\nPRs. You should merge the one prefixed by `[bot][main]` if created before\nproceeding. If the bot didn't create the PR, it is either because the workflow\nfailed or because the main branch was already up-to-date.\n\n## Update Kubernetes supported versions\n\nThe `main` branch of kube-prometheus should support at least the last 2 versions of\nKubernetes. We need to make sure that the CI on the main branch is testing the\nkube-prometheus configuration against these versions by updating the [CI\nworklow](.github/workflows/ci.yaml) to include the latest kind version and the\nlatest images versions that are attached to the kind release. Once that is\ndone, the [compatibility matrix](README.md#compatibility) in\nthe README should also be updated to reflect the CI changes.\n\n## Update Kubernetes versions used by kubeconform\n\nUpdate the versions of Kubernetes used when validating manifests with\nkubeconform in the [Makefile](Makefile) to align with the compatibility\nmatrix.\n\n## Create pull request to cut the release\n\n### Pin Jsonnet dependencies\n\nPin jsonnet dependencies in\n[jsonnetfile.json](jsonnet/kube-prometheus/jsonnetfile.json). Each dependency\nshould be pinned to the latest release branch or if it doesn't have one, pinned\nto the latest commit.\n\n### Start with a fresh environment\n\n```bash\nmake clean\n```\n\n### Update Jsonnet dependencies\n\n```bash\nmake update\n```\n\n### Generate manifests\n\n```bash\nmake generate\n```\n\n### Update the compatibility matrix\n\nUpdate the [compatibility matrix](README.md#compatibility) in\nthe README, by adding the new release based on the `main` branch compatibility\nand removing the oldest release branch to only keep the latest 5 branches in the\nmatrix.\n\n### Update changelog\n\nIterate over the PRs that were merged between the latest release of kube-prometheus and the HEAD and add the changelog entries to the [CHANGELOG](CHANGELOG.md).\n\n## Create release branch\n\nOnce the PR cutting the release is merged, pull the changes, create a new\nrelease branch named `release-x.y` based on the latest changes and push it to\nthe upstream repository or create the branch from Github UI directly.\n\n## Create the release\n\nFrom the Github UI, draft a new [release](https://github.com/prometheus-operator/kube-prometheus/releases/new). Give the correct tag name and select the newly created release branch as the Target. Fill the description and click the `Publish release` button.\n\n> [!NOTE]\n> The new tag will be created automatically when the release is published.\n\n> [!TIP]\n> If we click `Generate release notes` while creating the release to compare with the last released tag, along with the commit changes from last release it will also find new contributors. We can skip the release notes generated but can keep the `New Contributors` section. See [example](https://github.com/prometheus-operator/kube-prometheus/releases/tag/v0.15.0) for reference.\n\n## Create follow-up pull request\n\n### Unpin Jsonnet dependencies\n\nRevert previous changes made when pinning the jsonnet dependencies since we want\nthe main branch to be in sync with the latest changes of its dependencies.\n\n### Update CI workflow\n\nUpdate the [versions workflow](.github/workflows/versions.yaml) to include the latest release branch and remove the oldest one to reflect the list of supported releases.\n"
  },
  {
    "path": "build.sh",
    "content": "#!/usr/bin/env bash\n\n# This script uses arg $1 (name of *.jsonnet file to use) to generate the manifests/*.yaml files.\n\nset -e\nset -x\n# only exit with zero if all commands of the pipeline exit successfully\nset -o pipefail\n\n# Make sure to use project tooling\nPATH=\"$(pwd)/tmp/bin:${PATH}\"\n\n# Make sure to start with a clean 'manifests' dir\nrm -rf manifests\nmkdir -p manifests/setup\n\n# Calling gojsontoyaml is optional, but we would like to generate yaml, not json\njsonnet -J vendor -m manifests \"${1-example.jsonnet}\" | xargs -I{} sh -c 'cat {} | gojsontoyaml > {}.yaml' -- {}\n\n# Make sure to remove json files\nfind manifests -type f ! -name '*.yaml' -delete\nrm -f kustomization\n\n"
  },
  {
    "path": "code-of-conduct.md",
    "content": "## Community Code of Conduct\n\n### Contributor Code of Conduct\n\nAs contributors and maintainers of this project, and in the interest of\nfostering an open and welcoming community, we pledge to respect all people who\ncontribute through reporting issues, posting feature requests, updating\ndocumentation, submitting pull requests or patches, and other activities.\n\nWe are committed to making participation in this project a harassment-free\nexperience for everyone, regardless of level of experience, gender, gender\nidentity and expression, sexual orientation, disability, personal appearance,\nbody size, race, ethnicity, age, religion, or nationality.\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery\n* Personal attacks\n* Trolling or insulting/derogatory comments\n* Public or private harassment\n* Publishing others' private information, such as physical or electronic addresses, without explicit permission\n* Other unethical or unprofessional conduct.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct. By adopting this Code of Conduct,\nproject maintainers commit themselves to fairly and consistently applying these\nprinciples to every aspect of managing this project. Project maintainers who do\nnot follow or enforce the Code of Conduct may be permanently removed from the\nproject team.\n\nThis code of conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community.\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting a project maintainer listed in\nhttps://github.com/prometheus-operator/prometheus-operator/blob/master/MAINTAINERS.md.\n\nThis Code of Conduct is adapted from the Contributor Covenant\n(http://contributor-covenant.org), version 1.2.0, available at\nhttp://contributor-covenant.org/version/1/2/0/\n"
  },
  {
    "path": "developer-workspace/README.md",
    "content": "# Ephemeral developer workspaces\n\nAiming to provide better developer experience when making contributions to kube-prometheus, whether by actively developing new features/bug fixes or by reviewing pull requests, we want to provide ephemeral developer workspaces with everything already configured (as far as tooling makes it possible).\n\nA developer workspace provides a brand new Kubernetes cluster, where kube-prometheus can be easily deployed and the contributor can easily see the impact that a pull request is proposing.\n\nToday only [Github Codespaces](https://github.com/features/codespaces) is supported. Unfortunately, Codespaces is not available for everyone. If you are fortunate to have access to it, you can open a new workspace from a specific branch, or even from Pull Requests.\n\n![image](https://user-images.githubusercontent.com/24193764/135522435-44b177b4-00d4-4863-b45b-2db47c8c70d0.png)\n\n![image](https://user-images.githubusercontent.com/24193764/135522560-c64968ab-3b4e-4639-893a-c4d0a14421aa.png)\n\nAfter your workspace start, you can deploy a kube-prometheus inside a Kind cluster inside by running `make deploy`.\n\nIf you are reviewing a PR, you'll have a fully-functional kubernetes cluster, generating real monitoring data that can be used to review if the proposed changes works as described.\n\nIf you are working on new features/bug fixes, you can regenerate kube-prometheus's YAML manifests with `make generate` and deploy it again with `make deploy`.\n"
  },
  {
    "path": "developer-workspace/codespaces/prepare-kind.sh",
    "content": "#!/bin/bash\n\nwhich kind\nif [[ $? != 0 ]]; then\n    echo 'kind not available in $PATH, installing latest kind'\n    # Install latest kind\n    curl -s https://api.github.com/repos/kubernetes-sigs/kind/releases/latest \\\n    | grep \"browser_download_url.*kind-linux-amd64\" \\\n    | cut -d : -f 2,3 \\\n    | tr -d \\\" \\\n    | wget -qi -\n    mv kind-linux-amd64 developer-workspace/codespaces/kind && chmod +x developer-workspace/codespaces/kind\n    export PATH=$PATH:$PWD/developer-workspace/codespaces\nfi\n\ncluster_created=$($PWD/developer-workspace/codespaces/kind get clusters 2>&1)\nif [[ \"$cluster_created\" == \"No kind clusters found.\" ]]; then \n    $PWD/developer-workspace/codespaces/kind create cluster --config $PWD/.github/workflows/kind/config.yml\nelse\n    echo \"Cluster '$cluster_created' already present\" \nfi\n\nhelm repo add --force-update cilium https://helm.cilium.io/ \nhelm install cilium cilium/cilium --version 1.9.13 \\\n  --namespace kube-system \\\n  --set nodeinit.enabled=true \\\n  --set kubeProxyReplacement=partial \\\n  --set hostServices.enabled=false \\\n  --set externalIPs.enabled=true \\\n  --set nodePort.enabled=true \\\n  --set hostPort.enabled=true \\\n  --set bpf.masquerade=false \\\n  --set image.pullPolicy=IfNotPresent \\\n  --set ipam.mode=kubernetes \\\n  --set operator.replicas=1"
  },
  {
    "path": "developer-workspace/common/deploy-kube-prometheus.sh",
    "content": "#!/bin/bash\n\nkubectl apply --server-side -f manifests/setup\n\n# Safety wait for CRDs to be working\nsleep 30\n\nkubectl apply -f manifests/\nsleep 30\n# Safety wait for resources to be created\n\nkubectl rollout status -n monitoring daemonset node-exporter\nkubectl rollout status -n monitoring statefulset alertmanager-main\nkubectl rollout status -n monitoring statefulset prometheus-k8s\nkubectl rollout status -n monitoring deployment grafana\nkubectl rollout status -n monitoring deployment kube-state-metrics\n\nkubectl port-forward -n monitoring svc/grafana 3000 > /dev/null 2>&1 &\nkubectl port-forward -n monitoring svc/alertmanager-main 9093 > /dev/null 2>&1 &\nkubectl port-forward -n monitoring svc/prometheus-k8s 9090 > /dev/null 2>&1 &\n"
  },
  {
    "path": "developer-workspace/gitpod/prepare-k3s.sh",
    "content": "#!/bin/bash\n\nscript_dirname=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\nrootfslock=\"${script_dirname}/_output/rootfs/rootfs-ready.lock\"\nk3sreadylock=\"${script_dirname}/_output/rootfs/k3s-ready.lock\"\n\nif test -f \"${k3sreadylock}\"; then\n    exit 0\nfi\n\ncd $script_dirname\n\nfunction waitssh() {\n  while ! nc -z 127.0.0.1 2222; do   \n    sleep 0.1\n  done\n  ./ssh.sh \"whoami\" &>/dev/null\n  if [ $? -ne 0 ]; then\n    sleep 1\n    waitssh\n  fi\n}\n\nfunction waitrootfs() {\n  while ! test -f \"${rootfslock}\"; do\n    sleep 0.1\n  done\n}\n\necho \"🔥 Installing everything, this will be done only one time per workspace.\"\n\necho \"Waiting for the rootfs to become available, it can take a while, open the terminal #2 for progress\"\nwaitrootfs\necho \"✅ rootfs available\"\n\necho \"Waiting for the ssh server to become available, it can take a while, after this k3s is getting installed\"\nwaitssh\necho \"✅ ssh server available\"\n\n./ssh.sh \"curl -sfL https://get.k3s.io | sh -\"\n\nmkdir -p ~/.kube\n./scp.sh root@127.0.0.1:/etc/rancher/k3s/k3s.yaml ~/.kube/config\n\necho \"✅ k3s server is ready\"\ntouch \"${k3sreadylock}\"\n\n# safety wait for cluster availability\nsleep 30s"
  },
  {
    "path": "developer-workspace/gitpod/prepare-rootfs.sh",
    "content": "#!/bin/bash\n\nset -euo pipefail\n\nimg_url=\"https://cloud-images.ubuntu.com/hirsute/current/hirsute-server-cloudimg-amd64.tar.gz\"\n\nscript_dirname=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\noutdir=\"${script_dirname}/_output/rootfs\"\n\nrm -Rf $outdir\nmkdir -p $outdir\n\ncurl -L -o \"${outdir}/rootfs.tar.gz\" $img_url\n\ncd $outdir\n\ntar -xvf rootfs.tar.gz\n\nqemu-img resize hirsute-server-cloudimg-amd64.img +20G\n\nsudo virt-customize -a hirsute-server-cloudimg-amd64.img --run-command 'resize2fs /dev/sda'\n\nsudo virt-customize -a hirsute-server-cloudimg-amd64.img --root-password password:root\n\nnetconf=\"\nnetwork:\n  version: 2\n  renderer: networkd\n  ethernets:\n    enp0s3:\n      dhcp4: yes\n\"\n\n# networking setup\nsudo virt-customize -a hirsute-server-cloudimg-amd64.img --run-command \"echo '${netconf}' > /etc/netplan/01-net.yaml\"\n\n# copy kernel modules\nsudo virt-customize -a hirsute-server-cloudimg-amd64.img --copy-in /lib/modules/$(uname -r):/lib/modules\n\n# ssh\nsudo virt-customize -a hirsute-server-cloudimg-amd64.img --run-command 'apt remove openssh-server -y && apt install openssh-server -y'\nsudo virt-customize -a hirsute-server-cloudimg-amd64.img --run-command \"sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config\"\nsudo virt-customize -a hirsute-server-cloudimg-amd64.img --run-command \"sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config\"\n\n# mark as ready\ntouch rootfs-ready.lock\n\necho \"k3s development environment is ready\"\n"
  },
  {
    "path": "developer-workspace/gitpod/qemu.sh",
    "content": "#!/bin/bash\n\nset -xeuo pipefail\n\nscript_dirname=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\"\noutdir=\"${script_dirname}/_output\"\n\nsudo qemu-system-x86_64 -kernel \"/boot/vmlinuz\" \\\n-boot c -m 3073M -hda \"${outdir}/rootfs/hirsute-server-cloudimg-amd64.img\" \\\n-net user \\\n-smp 8 \\\n-append \"root=/dev/sda rw console=ttyS0,115200 acpi=off nokaslr\" \\\n-nic user,hostfwd=tcp::2222-:22,hostfwd=tcp::6443-:6443 \\\n-serial mon:stdio -display none"
  },
  {
    "path": "developer-workspace/gitpod/scp.sh",
    "content": "#!/bin/bash\n\nsshpass -p 'root' scp -o StrictHostKeychecking=no -P 2222 $@"
  },
  {
    "path": "developer-workspace/gitpod/ssh.sh",
    "content": "#!/bin/bash\n\nsshpass  -p 'root' ssh -o StrictHostKeychecking=no -p 2222 root@127.0.0.1 \"$@\""
  },
  {
    "path": "docs/EKS-cni-support.md",
    "content": "# CNI monitoring special configuration updates for EKS\n\nAWS EKS uses [CNI](https://github.com/aws/amazon-vpc-cni-k8s) networking plugin for pod networking in Kubernetes using Elastic Network Interfaces on AWS\n\nOne fatal issue that can occur is that you run out of IP addresses in your eks cluster. (Generally happens due to error configs where pods keep scheduling).\n\nYou can monitor the `awscni` using kube-promethus with :\n\n```jsonnet mdox-exec=\"cat examples/eks-cni-example.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n    kubePrometheus+: {\n      platform: 'eks',\n    },\n  },\n  kubernetesControlPlane+: {\n    prometheusRuleEksCNI+: {\n      spec+: {\n        groups+: [\n          {\n            name: 'example-group',\n            rules: [\n              {\n                record: 'aws_eks_available_ip',\n                expr: 'sum by(instance) (awscni_total_ip_addresses) - sum by(instance) (awscni_assigned_ip_addresses) < 10',\n              },\n            ],\n          },\n        ],\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n```\n\nAfter you have the required yaml file please run\n\n```\nkubectl apply -f manifests/prometheus-serviceMonitorAwsEksCNI.yaml\n```\n"
  },
  {
    "path": "docs/GKE-cadvisor-support.md",
    "content": "# Kubelet / cAdvisor special configuration updates for GKE\n\nPrior to GKE 1.11, the kubelet does not support token\nauthentication. Until it does, Prometheus must use HTTP (not HTTPS)\nfor scraping.\n\nYou can configure this behavior through kube-prometheus with:\n\n```\nlocal kp = (import 'kube-prometheus/kube-prometheus.libsonnet') +\n    (import 'kube-prometheus/kube-prometheus-insecure-kubelet.libsonnet') +\n\t{\n        _config+:: {\n\t\t# ... config here\n\t\t}\n    };\n```\n\nOr, you can patch and re-apply your existing manifests with:\n\nOn linux:\n\n```\nsed -i -e 's/https/http/g' manifests/prometheus-serviceMonitorKubelet.yaml\n```\n\nOn MacOs:\n\n```\nsed -i '' -e 's/https/http/g' manifests/prometheus-serviceMonitorKubelet.yaml\n```\n\nAfter you have modified the yaml file please run\n\n```\nkubectl apply -f manifests/prometheus-serviceMonitorKubelet.yaml\n```\n"
  },
  {
    "path": "docs/access-ui.md",
    "content": "---\nweight: 300\ntoc: true\ntitle: Access Dashboards\nmenu:\n    docs:\n        parent: kube\nimages: []\ndraft: false\n---\n\nPrometheus, Grafana, and Alertmanager dashboards can be accessed quickly using `kubectl port-forward` after running the quickstart via the commands below.\n\n> Kubernetes 1.10 or later is required.\n\nYou can also learn how to [expose Prometheus/Alertmanager/Grafana via Ingress](https://prometheus-operator.dev/kube-prometheus/kube/exposing-prometheus-alertmanager-grafana-ingress/)\n\n## Prometheus\n\n```shell\nkubectl --namespace monitoring port-forward svc/prometheus-k8s 9090\n```\n\nOpen Prometheus on [http://localhost:9090](http://localhost:9090) in your browser.\n\nCheck out the [alerts](http://localhost:9090/alerts) and [rules](http://localhost:9090/rules) pages with the pre-configured rules and alerts!\nThis Prometheus is supposed to monitor your Kubernetes cluster and make sure to alert you if there’s a problem with it.\n\nFor your own applications we recommend running one or more other instances.\n\n## Grafana\n\n```shell\nkubectl --namespace monitoring port-forward svc/grafana 3000\n```\n\nOpen Grafana on [localhost:3000](https://localhost:3000) in your browser.\nYou can login with the username `admin` and password `admin`.\n\n## Alertmanager\n\n```shell\nkubectl --namespace monitoring port-forward svc/alertmanager-main 9093\n```\n\nOpen Alertmanager on [localhost:9093](http://localhost:9093) in your browser.\n"
  },
  {
    "path": "docs/blackbox-exporter.md",
    "content": "---\nweight: 304\ntoc: true\ntitle: Blackbox Exporter\nmenu:\n    docs:\n        parent: kube\nlead: This guide will help you deploying the blackbox-exporter with the Probe custom resource definition.\nimages: []\ndraft: false\ndescription: This guide will help you deploying the blackbox-exporter with the Probe custom resource definition.\ndate: \"2021-03-08T08:49:31+00:00\"\n---\n\n# Setting up a blackbox exporter\n\nThe `prometheus-operator` defines a `Probe` resource type that can be used to describe blackbox checks. To execute these, a separate component called [`blackbox_exporter`](https://github.com/prometheus/blackbox_exporter) has to be deployed, which can be scraped to retrieve the results of these checks. You can use `kube-prometheus` to set up such a blackbox exporter within your Kubernetes cluster.\n\n## Adding blackbox exporter manifests to an existing `kube-prometheus` configuration\n\n1. Override blackbox-related configuration parameters as needed.\n2. Add the following to the list of renderers to render the blackbox exporter manifests:\n\n```\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) }\n```\n\n## Configuration parameters influencing the blackbox exporter\n\n* `_config.namespace`: the namespace where the various generated resources (`ConfigMap`, `Deployment`, `Service`, `ServiceAccount` and `ServiceMonitor`) will reside. This does not affect where you can place `Probe` objects; that is determined by the configuration of the `Prometheus` resource. This option is shared with other `kube-prometheus` components; defaults to `default`.\n* `_config.imageRepos.blackboxExporter`: the name of the blackbox exporter image to deploy. Defaults to `quay.io/prometheus/blackbox-exporter`.\n* `_config.versions.blackboxExporter`: the tag of the blackbox exporter image to deploy. Defaults to the version `kube-prometheus` was tested with.\n* `_config.imageRepos.configmapReloader`: the name of the ConfigMap reloader image to deploy. Defaults to `ghcr.io/jimmidyson/configmap-reload`.\n* `_config.versions.configmapReloader`: the tag of the ConfigMap reloader image to deploy. Defaults to the version `kube-prometheus` was tested with.\n* `_config.resources.blackbox-exporter.requests`: the requested resources; this is used for each container. Defaults to `10m` CPU and `20Mi` RAM. See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ for details.\n* `_config.resources.blackbox-exporter.limits`: the resource limits; this is used for each container. Defaults to `20m` CPU and `40Mi` RAM. See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ for details.\n* `_config.blackboxExporter.port`: the exposed HTTPS port of the exporter. This is what Prometheus can scrape for metrics related to the blackbox exporter itself. Defaults to `9115`.\n* `_config.blackboxExporter.internalPort`: the internal plaintext port of the exporter. Prometheus scrapes configured via `Probe` objects cannot access the HTTPS port right now, so you have to specify this port in the `url` field. Defaults to `19115`.\n* `_config.blackboxExporter.replicas`: the number of exporter replicas to be deployed. Defaults to `1`.\n* `_config.blackboxExporter.matchLabels`: map of the labels to be used to select resources belonging to the instance deployed. Defaults to `{ 'app.kubernetes.io/name': 'blackbox-exporter' }`\n* `_config.blackboxExporter.assignLabels`: map of the labels applied to components of the instance deployed. Defaults to all the labels included in the `matchLabels` option, and additionally `app.kubernetes.io/version` is set to the version of the blackbox exporter.\n* `_config.blackboxExporter.modules`: the modules available in the blackbox exporter installation, i.e. the types of checks it can perform. The default value includes most of the modules defined in the default blackbox exporter configuration: `http_2xx`, `http_post_2xx`, `tcp_connect`, `pop3s_banner`, `ssh_banner`, and `irc_banner`. `icmp` is omitted so the exporter can be run with minimum privileges, but you can add it back if needed - see the example below. See https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md for the configuration format, except you have to use JSON instead of YAML here.\n* `_config.blackboxExporter.privileged`: whether the `blackbox-exporter` container should be running as non-root (`false`) or root with heavily-restricted capability set (`true`). Defaults to `true` if you have any ICMP modules defined (which need the extra permissions) and `false` otherwise.\n\n## Complete example\n\n```jsonnet\nlocal kp =\n  (import 'kube-prometheus/kube-prometheus.libsonnet') +\n  {\n    _config+:: {\n      namespace: 'monitoring',\n      blackboxExporter+:: {\n        modules+:: {\n          icmp: {\n            prober: 'icmp',\n          },\n        },\n      },\n    },\n  };\n\n{ ['setup/0namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor is separated so that it can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\nAfter installing the generated manifests, you can create `Probe` resources, for example:\n\n```yaml\nkind: Probe\napiVersion: monitoring.coreos.com/v1\nmetadata:\n  name: example-com-website\n  namespace: monitoring\nspec:\n  interval: 60s\n  module: http_2xx\n  prober:\n    url: blackbox-exporter.monitoring.svc.cluster.local:19115\n  targets:\n    staticConfig:\n      static:\n      - http://example.com\n      - https://example.com\n```\n"
  },
  {
    "path": "docs/community-support.md",
    "content": "# Community support\n\nFor bugs, you can use the GitHub [issue tracker](https://github.com/prometheus-operator/kube-prometheus/issues/new/choose).\n\nFor questions, you can use the GitHub [discussions forum](https://github.com/prometheus-operator/kube-prometheus/discussions).\n\nMany of the `kube-prometheus` project's contributors and users can also be found on the #prometheus-operator channel of the [Kubernetes Slack](https://slack.k8s.io/).\n\n`kube-prometheus` is the aggregation of many projects that all have different\nchannels to reach out for help and support. This community strives at\nsupporting all users and you should never be afraid of asking us first. However\nif your request relates specifically to one of the projects listed below, it is\noften more efficient to reach out to the project directly. If you are unsure,\nplease feel free to open an issue in this repository and we will redirect you\nif applicable.\n\n## prometheus-operator\n\nFor documentation, check the project's [documentation directory](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation).\n\nFor questions, use the #prometheus-operator channel on the [Kubernetes Slack](https://slack.k8s.io/).\n\nFor bugs, use the GitHub [issue tracker](https://github.com/prometheus-operator/prometheus-operator/issues/new/choose).\n\n## Prometheus, Alertmanager, node_exporter\n\nFor documentation, check the Prometheus [online docs](https://prometheus.io/docs/). There is a\n[section](https://prometheus.io/docs/introduction/media/) with links to blog\nposts, recorded talks and presentations. This [repository](https://github.com/roaldnefs/awesome-prometheus)\n(not affiliated to the Prometheus project) has also a list of curated resources\nrelated to the Prometheus ecosystem.\n\nFor questions, see the Prometheus [community page](https://prometheus.io/community/) for the various channels.\n\nThere is also a #prometheus channel on the [CNCF Slack](https://slack.cncf.io/).\n\n## kube-state-metrics\n\nFor documentation, see the project's [docs directory](https://github.com/kubernetes/kube-state-metrics/tree/main/docs).\n\nFor questions, use the #kube-state-metrics channel on the [Kubernetes Slack](https://slack.k8s.io/).\n\nFor bugs, use the GitHub [issue tracker](https://github.com/kubernetes/kube-state-metrics/issues/new/choose).\n\n## Kubernetes\n\nFor documentation, check the [Kubernetes docs](https://kubernetes.io/docs/home/).\n\nFor questions, use the [community forums](https://discuss.kubernetes.io/) and the [Kubernetes Slack](https://slack.k8s.io/). Check also the [community page](https://kubernetes.io/community/#discuss).\n\nFor bugs, use the GitHub [issue tracker](https://github.com/kubernetes/kubernetes/issues/new/choose).\n\n## Prometheus adapter\n\nFor documentation, check the project's [README](https://github.com/DirectXMan12/k8s-prometheus-adapter/blob/master/README.md).\n\nFor questions, use the #sig-instrumentation channel on the [Kubernetes Slack](https://slack.k8s.io/).\n\nFor bugs, use the GitHub [issue tracker](https://github.com/DirectXMan12/k8s-prometheus-adapter/issues/new).\n\n## Grafana\n\nFor documentation, check the [Grafana docs](https://grafana.com/docs/grafana/latest/).\n\nFor questions, use the [community forums](https://community.grafana.com/).\n\nFor bugs, use the GitHub [issue tracker](https://github.com/grafana/grafana/issues/new/choose).\n\n## kubernetes-mixin\n\nFor documentation, check the project's [README](https://github.com/kubernetes-monitoring/kubernetes-mixin/blob/master/README.md).\n\nFor questions, use #monitoring-mixins channel on the [Kubernetes Slack](https://slack.k8s.io/).\n\nFor bugs, use the GitHub [issue tracker](https://github.com/kubernetes-monitoring/kubernetes-mixin/issues/new).\n\n## Jsonnet\n\nFor documentation, check the [Jsonnet](https://jsonnet.org/) website.\n\nFor questions, use the [mailing list](https://groups.google.com/forum/#!forum/jsonnet).\n"
  },
  {
    "path": "docs/customizations/alertmanager-configuration.md",
    "content": "### Alertmanager configuration\n\nThe Alertmanager configuration is located in the `values.alertmanager.config` configuration field. In order to set a custom Alertmanager configuration simply set this field.\n\n```jsonnet mdox-exec=\"cat examples/alertmanager-config.jsonnet\"\n((import 'kube-prometheus/main.libsonnet') + {\n   values+:: {\n     alertmanager+: {\n       config: |||\n         global:\n           resolve_timeout: 10m\n         route:\n           group_by: ['job']\n           group_wait: 30s\n           group_interval: 5m\n           repeat_interval: 12h\n           receiver: 'null'\n           routes:\n           - match:\n               alertname: Watchdog\n             receiver: 'null'\n         receivers:\n         - name: 'null'\n       |||,\n     },\n   },\n }).alertmanager.secret\n```\n\nIn the above example the configuration has been inlined, but can just as well be an external file imported in jsonnet via the `importstr` function.\n\n```jsonnet mdox-exec=\"cat examples/alertmanager-config-external.jsonnet\"\n((import 'kube-prometheus/main.libsonnet') + {\n   values+:: {\n     alertmanager+: {\n       config: importstr 'alertmanager-config.yaml',\n     },\n   },\n }).alertmanager.secret\n```\n"
  },
  {
    "path": "docs/customizations/components-name-namespace-overrides.md",
    "content": "### Components' name and namespace overrides\n\nIt is possible to override the namespace where kube-prometheus is going to be deployed, like the example below:\n\n```jsonnet\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n{\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n};\n```\n\nIf prefered, it can be changed individually by component. It is also possible to change the name of Prometheus and Alertmanager Custom Resources, like shown below:\n\n```jsonnet mdox-exec=\"cat examples/name-namespace-overrides.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           {\n             values+:: {\n               common+: {\n                 namespace: 'monitoring',\n               },\n\n               prometheus+: {\n                 namespace: 'foo',\n                 name: 'bar',\n               },\n\n               alertmanager+: {\n                 namespace: 'bar',\n                 name: 'foo',\n               },\n             },\n           };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n// Add the restricted psp to setup\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n```\n"
  },
  {
    "path": "docs/customizations/developing-prometheus-rules-and-grafana-dashboards.md",
    "content": "---\nweight: 307\ntoc: true\ntitle: Prometheus Rules and Grafana Dashboards\nmenu:\n    docs:\n        parent: kube\nlead: This guide will help you adding Prometheus Rules and Grafana Dashboards on top of kube-prometheus\nimages: []\ndraft: false\ndescription: This guide will help you adding Prometheus Rules and Grafana Dashboards on top of kube-prometheus\n---\n\n`kube-prometheus` ships with a set of default [Prometheus rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) and [Grafana](http://grafana.com/) dashboards. At some point one might like to extend them, the purpose of this document is to explain how to do this.\n\nAll manifests of kube-prometheus are generated using [jsonnet](https://jsonnet.org/).\nPrometheus rules and Grafana dashboards in specific follow the\n[Prometheus Monitoring Mixins proposal](https://github.com/monitoring-mixins/docs/blob/master/design.pdf).\n\nFor both the Prometheus rules and the Grafana dashboards Kubernetes `ConfigMap`s are generated within kube-prometheus. In order to add additional rules and dashboards simply merge them onto the existing json objects. This document illustrates examples for rules as well as dashboards.\n\nAs a basis, all examples in this guide are based on the base example of the kube-prometheus [readme](https://github.com/prometheus-operator/kube-prometheus/blob/main/README.md):\n\n```jsonnet mdox-exec=\"cat example.jsonnet\"\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // Uncomment the following imports to enable its patches\n  // (import 'kube-prometheus/addons/anti-affinity.libsonnet') +\n  // (import 'kube-prometheus/addons/managed-cluster.libsonnet') +\n  // (import 'kube-prometheus/addons/node-ports.libsonnet') +\n  // (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  // (import 'kube-prometheus/addons/custom-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/external-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/pyrra.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n```\n\n## Prometheus rules\n\n### Alerting rules\n\nAs per the [Prometheus Monitoring Mixins proposal](https://github.com/monitoring-mixins/docs/blob/master/design.pdf)\nPrometheus alerting rules are under the key `prometheusAlerts` in the top level object.\nAdditional alerting rules can be added by merging into the existing object.\n\nThe format is exactly the Prometheus format, so there should be no changes necessary should you have existing rules that you want to include.\n\n> Note that alerts can also be included into this file, using the jsonnet `import` function.\n> In this example it is just inlined in order to demonstrate their use in a single file.\n\n```jsonnet mdox-exec=\"cat examples/prometheus-additional-alert-rule-example.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  exampleApplication: {\n    prometheusRuleExample: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'my-prometheus-rule',\n        namespace: $.values.common.namespace,\n      },\n      spec: {\n        groups: [\n          {\n            name: 'example-group',\n            rules: [\n              {\n                alert: 'ExampleAlert',\n                expr: 'vector(1)',\n                labels: {\n                  severity: 'warning',\n                },\n                annotations: {\n                  description: 'This is an example alert.',\n                },\n              },\n            ],\n          },\n        ],\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n```\n\n### Recording rules\n\nIn order to add a recording rule, simply do the same with the `prometheusRules` field.\n\n> Note that rules can just as well be included into this file, using the jsonnet `import` function.\n> In this example it is just inlined in order to demonstrate their use in a single file.\n\n```jsonnet mdox-exec=\"cat examples/prometheus-additional-recording-rule-example.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  exampleApplication: {\n    prometheusRuleExample: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'my-prometheus-rule',\n        namespace: $.values.common.namespace,\n      },\n      spec: {\n        groups: [\n          {\n            name: 'example-group',\n            rules: [\n              {\n                record: 'some_recording_rule_name',\n                expr: 'vector(1)',\n              },\n            ],\n          },\n        ],\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n```\n\n### Pre-rendered rules\n\nWe acknowledge, that users may need to transition existing rules, and therefore allow an option to add additional pre-rendered rules. Luckily the yaml and json formats are very close so the yaml rules just need to be converted to json without any manual interaction needed. Just a tool to convert yaml to json is needed:\n\n```\ngo get -u -v github.com/brancz/gojsontoyaml\n```\n\nAnd convert the existing rule file:\n\n```\ncat existingrule.yaml | gojsontoyaml -yamltojson > existingrule.json\n```\n\nThen import it in jsonnet:\n\n```jsonnet mdox-exec=\"cat examples/prometheus-additional-rendered-rule-example.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  exampleApplication: {\n    prometheusRuleExample: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'my-prometheus-rule',\n        namespace: $.values.common.namespace,\n      },\n      spec: {\n        groups: (import 'existingrule.json').groups,\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n```\n\n### Changing default rules\n\nAlong with adding additional rules, we give the user the option to filter or adjust the existing rules imported by `kube-prometheus/main.libsonnet`.\nThe recording rules can be found in [kube-prometheus/components/mixin/rules](https://github.com/prometheus-operator/kube-prometheus/tree/main/jsonnet/kube-prometheus/components/mixin/rules)\nand [kubernetes-mixin/rules](https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/rules).\nThe alerting rules can be found in [kube-prometheus/components/mixin/alerts](https://github.com/prometheus-operator/kube-prometheus/tree/main/jsonnet/kube-prometheus/components/mixin/alerts)\nand [kubernetes-mixin/alerts](https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/alerts).\n\nKnowing which rules to change, the user can now use functions from the [Jsonnet standard library](https://jsonnet.org/ref/stdlib.html) to make these changes.\nBelow are examples of both a filter and an adjustment being made to the default rules.\nThese changes can be assigned to a local variable and then added to the `local kp` object as seen in the examples above.\n\n#### Filter\n\nHere the alert `KubeStatefulSetReplicasMismatch` is being filtered out of the group `kubernetes-apps`.\nThe default rule can be seen [here](https://github.com/kubernetes-monitoring/kubernetes-mixin/blob/master/alerts/apps_alerts.libsonnet).\nYou first need to find out in which component the rule is defined (here it is kuberentesControlPlane).\n\n```jsonnet\nlocal filter = {\n  kubernetesControlPlane+: {\n    prometheusRule+: {\n      spec+: {\n        groups: std.map(\n          function(group)\n            if group.name == 'kubernetes-apps' then\n              group {\n                rules: std.filter(\n                  function(rule)\n                    rule.alert != 'KubeStatefulSetReplicasMismatch',\n                  group.rules\n                ),\n              }\n            else\n              group,\n          super.groups\n        ),\n      },\n    },\n  },\n};\n```\n\n#### Adjustment\n\nHere the expression for another alert in the same component is updated from its previous value.\nThe default rule can be seen [here](https://github.com/kubernetes-monitoring/kubernetes-mixin/blob/master/alerts/apps_alerts.libsonnet).\n\n```jsonnet\nlocal update = {\n  kubernetesControlPlane+: {\n    prometheusRule+: {\n      spec+: {\n        groups: std.map(\n          function(group)\n            if group.name == 'kubernetes-apps' then\n              group {\n                rules: std.map(\n                  function(rule)\n                    if rule.alert == 'KubePodCrashLooping' then\n                      rule {\n                        expr: 'rate(kube_pod_container_status_restarts_total{namespace=kube-system,job=\"kube-state-metrics\"}[10m]) * 60 * 5 > 0',\n                      }\n                    else\n                      rule,\n                  group.rules\n                ),\n              }\n            else\n              group,\n          super.groups\n        ),\n      },\n    },\n  },\n};\n```\n\nUsing the example from above about adding in pre-rendered rules, the new local variables can be added in as follows:\n\n```jsonnet\nlocal add = {\n  exampleApplication:: {\n    prometheusRule+: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'example-application-rules',\n        namespace: $.values.common.namespace,\n      },\n      spec: (import 'existingrule.json'),\n    },\n  },\n};\nlocal kp = (import 'kube-prometheus/main.libsonnet') + filter + update + add;\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n            filter +\n            update +\n            add + {\n\t      values+:: {\n                common+: {\n                  namespace: 'monitoring',\n                },\n              },\n            };\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) } +\n{ ['exampleApplication-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n```\n\n## Dashboards\n\nDashboards can either be added using jsonnet or simply a pre-rendered json dashboard.\n\n### Jsonnet dashboard\n\nWe recommend using the [grafonnet](https://github.com/grafana/grafonnet-lib/) library for jsonnet,\nwhich gives you a simple DSL to generate Grafana dashboards.\nFollowing the [Prometheus Monitoring Mixins proposal](https://github.com/monitoring-mixins/docs/blob/master/design.pdf)\nadditional dashboards are added to the `grafanaDashboards` key, located in the top level object.\nTo add new jsonnet dashboards, simply add one.\n\n> Note that dashboards can just as well be included into this file, using the jsonnet `import` function.\n> In this example it is just inlined in order to demonstrate their use in a single file.\n\n```jsonnet mdox-exec=\"cat examples/grafana-additional-jsonnet-dashboard-example.jsonnet\"\nlocal grafana = import 'grafonnet/grafana.libsonnet';\nlocal dashboard = grafana.dashboard;\nlocal row = grafana.row;\nlocal prometheus = grafana.prometheus;\nlocal template = grafana.template;\nlocal graphPanel = grafana.graphPanel;\n\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+:: {\n      namespace: 'monitoring',\n    },\n    grafana+: {\n      dashboards+:: {\n        'my-dashboard.json':\n          dashboard.new('My Dashboard')\n          .addTemplate(\n            {\n              current: {\n                text: 'Prometheus',\n                value: 'Prometheus',\n              },\n              hide: 0,\n              label: null,\n              name: 'datasource',\n              options: [],\n              query: 'prometheus',\n              refresh: 1,\n              regex: '',\n              type: 'datasource',\n            },\n          )\n          .addRow(\n            row.new()\n            .addPanel(graphPanel.new('My Panel', span=6, datasource='$datasource')\n                      .addTarget(prometheus.target('vector(1)')))\n          ),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\n### Pre-rendered Grafana dashboards\n\nAs jsonnet is a superset of json, the jsonnet `import` function can be used to include Grafana dashboard json blobs.\nIn this example we are importing a [provided example dashboard](https://github.com/prometheus-operator/kube-prometheus/tree/main/examples/example-grafana-dashboard.json).\n\n```jsonnet mdox-exec=\"cat examples/grafana-additional-rendered-dashboard-example.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+:: {\n      namespace: 'monitoring',\n    },\n    grafana+: {\n      dashboards+:: {  // use this method to import your dashboards to Grafana\n        'my-dashboard.json': (import 'example-grafana-dashboard.json'),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\nIn case you have lots of json dashboard exported out from grafana UI the above approach is going to take lots of time.\nTo improve performance we can use `rawDashboards` field and provide it's value as json string by using `importstr`\n\n```jsonnet mdox-exec=\"cat examples/grafana-additional-rendered-dashboard-example-2.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+:: {\n      namespace: 'monitoring',\n    },\n    grafana+: {\n      rawDashboards+:: {\n        'my-dashboard.json': (importstr 'example-grafana-dashboard.json'),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\n### Mixins\n\nKube-prometheus comes with a couple of default mixins as the Kubernetes-mixin and the Node-exporter mixin,\nhowever there [are many more mixins](https://monitoring.mixins.dev/).\nTo use other mixins, kube-prometheus has a jsonnet library for creating a PrometheusRule CRD and Grafana dashboards from a mixin.\nBelow is an example of creating a mixin object that has Prometheus rules and Grafana dashboards:\n\n```jsonnet\n// Import the library function for adding mixins\nlocal addMixin = (import 'kube-prometheus/lib/mixin.libsonnet');\n\n// Create your mixin\nlocal myMixin = addMixin({\n  name: 'myMixin',\n  mixin: import 'my-mixin/mixin.libsonnet',\n});\n```\n\nThe myMixin object will have two objects - `prometheusRules` and `grafanaDashboards`. The `grafanaDashboards` object will be needed to be added to the `dashboards` field as in the example below:\n\n```jsonnet\nvalues+:: {\n  grafana+:: {\n    dashboards+:: myMixin.grafanaDashboards\n```\n\nThe `prometheusRules` object is a PrometheusRule CRD. It should be defined as its own jsonnet object.\nIf you define multiple mixins in a single jsonnet object, there is a possibility that they will overwrite each others'\nconfiguration and there will be unintended effects.\nTherefore, use the `prometheusRules` object as its own jsonnet object:\n\n```jsonnet\n...\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ 'external-mixins/my-mixin-prometheus-rules': myMixin.prometheusRules } // one object for each mixin\n```\n\nAs mentioned above each mixin is configurable and you would configure the mixin as in the example below:\n\n```jsonnet\nlocal myMixin = addMixin({\n  name: 'myMixin',\n  mixin: (import 'my-mixin/mixin.libsonnet') + {\n    _config+:: {\n      myMixinSelector: 'my-selector',\n      interval: '30d', // example\n    },\n  },\n});\n```\n\nThe library has also two optional parameters - the namespace for the `PrometheusRule` CRD and the dashboard folder for the Grafana dashboards.\nThe below example shows how to use both:\n\n```jsonnet\nlocal myMixin = addMixin({\n  name: 'myMixin',\n  namespace: 'prometheus', // default is monitoring\n  dashboardFolder: 'Observability',\n  mixin: (import 'my-mixin/mixin.libsonnet') + {\n    _config+:: {\n      myMixinSelector: 'my-selector',\n      interval: '30d', // example\n    },\n  },\n});\n```\n\nThe created `prometheusRules` object will have the metadata field `namespace` added and the usage will remain the same.\nHowever, the `grafanaDasboards` will be added to the `folderDashboards` field instead of the `dashboards` field as shown in the example below:\n\n```jsonnet\nvalues+:: {\n  grafana+:: {\n    folderDashboards+:: {\n        Kubernetes: {\n            ...\n        },\n        Misc: {\n            'grafana-home.json': import 'dashboards/misc/grafana-home.json',\n        },\n    } + myMixin.grafanaDashboards\n```\n\nFull example of including etcd mixin using method described above:\n\n```jsonnet mdox-exec=\"cat examples/mixin-inclusion.jsonnet\"\nlocal addMixin = (import 'kube-prometheus/lib/mixin.libsonnet');\nlocal etcdMixin = addMixin({\n  name: 'etcd',\n  mixin: (import 'github.com/etcd-io/etcd/contrib/mixin/mixin.libsonnet') + {\n    _config+: {},  // mixin configuration object\n  },\n});\n\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           {\n             values+:: {\n               common+: {\n                 namespace: 'monitoring',\n               },\n               grafana+: {\n                 // Adding new dashboard to grafana. This will modify grafana configMap with dashboards\n                 dashboards+: etcdMixin.grafanaDashboards,\n               },\n             },\n           };\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n// Rendering prometheusRules object. This is an object compatible with prometheus-operator CRD definition for prometheusRule\n{ 'external-mixins/etcd-mixin-prometheus-rules': etcdMixin.prometheusRules }\n```\n"
  },
  {
    "path": "docs/customizations/dropping-unwanted-dashboards.md",
    "content": "### Dropping unwanted dashboards\n\nWhen deploying kube-prometheus, your Grafana instance is deployed with a lot of dashboards by default. All those dashboards are comming from upstream projects like [kubernetes-mixin](https://github.com/kubernetes-monitoring/kubernetes-mixin), [prometheus-mixin](https://github.com/prometheus/prometheus/tree/main/documentation/prometheus-mixin) and [node-exporter-mixin](https://github.com/prometheus/node_exporter/tree/master/docs/node-mixin), among others.\n\nIn case you find out that you don't need some of them, you can choose to remove those dashboards like in the example below, which removes the [`alertmanager-overview.json`](https://github.com/prometheus/alertmanager/blob/main/doc/alertmanager-mixin/dashboards/overview.libsonnet) dashboard.\n\n```jsonnet mdox-exec=\"cat examples/drop-dashboards.jsonnet\"\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      grafana+: {\n        dashboards: std.mergePatch(super.dashboards, {\n          // Add more unwanted dashboards here\n          'alertmanager-overview.json': null,\n        }),\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n```\n"
  },
  {
    "path": "docs/customizations/exposing-prometheus-alertmanager-grafana-ingress.md",
    "content": "---\nweight: 303\ntoc: true\ntitle: Expose via Ingress\nmenu:\n    docs:\n        parent: kube\nlead: This guide will help you deploying a Kubernetes Ingress to expose Prometheus, Alertmanager and Grafana.\nimages: []\ndraft: false\ndescription: This guide will help you deploying a Kubernetes Ingress to expose Prometheus, Alertmanager and Grafana.\n---\n\nIn order to access the web interfaces via the Internet [Kubernetes Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) is a popular option. This guide explains, how Kubernetes Ingress can be setup, in order to expose the Prometheus, Alertmanager and Grafana UIs, that are included in the [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) project.\n\nNote: before continuing, it is recommended to first get familiar with the [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) stack by itself.\n\n## Prerequisites\n\nApart from a running Kubernetes cluster with a running [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) stack, a Kubernetes Ingress controller must be installed and functional. This guide was tested with the [nginx-ingress-controller](https://github.com/kubernetes/ingress-nginx). If you wish to reproduce the exact result in as depicted in this guide we recommend using the nginx-ingress-controller.\n\n## Setting up Ingress\n\nThe setup of Ingress objects is the same for Prometheus, Alertmanager and Grafana. Therefore this guides demonstrates it in detail for Prometheus as it can easily be adapted for the other applications.\n\nAs monitoring data may contain sensitive data, this guide describes how to setup Ingress with basic auth as an example of minimal security. Of course this should be adapted to the preferred authentication mean of any particular organization, but we feel it is important to at least provide an example with a minimum of security.\n\nIn order to setup basic auth, a secret with the `htpasswd` formatted file needs to be created. To do this, first install the [`htpasswd`](https://httpd.apache.org/docs/2.4/programs/htpasswd.html) tool.\n\nTo create the `htpasswd` formatted file called `auth` run:\n\n```\nhtpasswd -c auth <username>\n```\n\nIn order to use this a secret needs to be created containing the name of the `htpasswd`, and with annotations on the Ingress object basic auth can be configured.\n\nAlso, the applications provide external links to themselves in alerts and various places. When an ingress is used in front of the applications these links need to be based on the external URL's. This can be configured for each application in jsonnet.\n\n```jsonnet\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n    prometheus+:: {\n      prometheus+: {\n        spec+: {\n          externalUrl: 'http://prometheus.example.com',\n        },\n      },\n    },\n    ingress+:: {\n      'prometheus-k8s': {\n        apiVersion: 'networking.k8s.io/v1',\n        kind: 'Ingress',\n        metadata: {\n          name: $.prometheus.prometheus.metadata.name,\n          namespace: $.prometheus.prometheus.metadata.namespace,\n          annotations: {\n            'nginx.ingress.kubernetes.io/auth-type': 'basic',\n            'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',\n            'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',\n          },\n        },\n        spec: {\n          rules: [{\n            host: 'prometheus.example.com',\n            http: {\n              paths: [{\n                backend: {\n                  service: {\n                    name: $.prometheus.service.metadata.name,\n                    port: 'web',\n                  },\n                },\n              }],\n            },\n          }],\n        },\n    },\n  } + {\n    ingress+:: {\n      'basic-auth-secret': {\n        apiVersion: 'v1',\n        kind: 'Secret',\n        metadata: {\n          name: 'basic-auth',\n          namespace: $._config.namespace,\n        },\n        data: { auth: std.base64(importstr 'auth') },\n        type: 'Opaque',\n      },\n    },\n  };\n\n// Output a kubernetes List object with both ingresses (k8s-libsonnet)\nk.core.v1.list.new([\n  kp.ingress['prometheus-k8s'],\n  kp.ingress['basic-auth-secret'],\n])\n```\n\nIn order to expose Alertmanager and Grafana, simply create additional fields containing an ingress object, but simply pointing at the `alertmanager` or `grafana` instead of the `prometheus-k8s` Service. Make sure to also use the correct port respectively, for Alertmanager it is also `web`, for Grafana it is `http`. Be sure to also specify the appropriate external URL. Note that the external URL for grafana is set in a different way than the external URL for Prometheus or Alertmanager. See [ingress.jsonnet](https://github.com/prometheus-operator/kube-prometheus/tree/main/examples/ingress.jsonnet) for how to set the Grafana external URL.\n\nIn order to render the ingress objects similar to the other objects use as demonstrated in the [main readme](https://github.com/prometheus-operator/kube-prometheus/tree/main/README.md):\n\n```jsonnet\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['ingress-' + name]: kp.ingress[name] for name in std.objectFields(kp.ingress) }\n```\n\nNote, that in comparison only the last line was added, the rest is identical to the original.\n\nSee [ingress.jsonnet](https://github.com/prometheus-operator/kube-prometheus/tree/main/examples/ingress.jsonnet) for an example implementation.\n\n## Adding Ingress namespace to NetworkPolicies\n\nNetworkPolicies restricting access to the components are added by default. These can either be removed as in\n[networkpolicies-disabled.jsonnet](https://github.com/prometheus-operator/kube-prometheus/tree/main/examples/networkpolicies-disabled.jsonnet) or modified as\ndescribed here.\n\nThis is an example for grafana, but the same can be applied to alertmanager and prometheus.\n\n```jsonnet\n{\n  alertmanager+:: {\n    networkPolicy+: {\n      spec+: {\n        ingress: [\n          super.ingress[0] + {\n            from+: [\n              {\n                namespaceSelector: {\n                  matchLabels: {\n                    'app.kubernetes.io/name': 'ingress-nginx',\n                  },\n                },\n              },\n            ],\n          },\n        ] + super.ingress[1:],\n      },\n    },\n  },\n}\n```\n"
  },
  {
    "path": "docs/customizations/monitoring-additional-namespaces.md",
    "content": "### Monitoring additional namespaces\n\nIn order to monitor additional namespaces, the Prometheus server requires the appropriate `Role` and `RoleBinding` to be able to discover targets from that namespace. By default the Prometheus server is limited to the three namespaces it requires: default, kube-system and the namespace you configure the stack to run in via `$.values.namespace`. This is specified in `$.values.prometheus.namespaces`, to add new namespaces to monitor, simply append the additional namespaces:\n\n```jsonnet mdox-exec=\"cat examples/additional-namespaces.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n\n    prometheus+: {\n      namespaces+: ['my-namespace', 'my-second-namespace'],\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\n#### Defining the ServiceMonitor for each additional Namespace\n\nIn order to Prometheus be able to discovery and scrape services inside the additional namespaces specified in previous step you need to define a ServiceMonitor resource.\n\n> Typically it is up to the users of a namespace to provision the ServiceMonitor resource, but in case you want to generate it with the same tooling as the rest of the cluster monitoring infrastructure, this is a guide on how to achieve this.\n\nYou can define ServiceMonitor resources in your `jsonnet` spec. See the snippet bellow:\n\n```jsonnet mdox-exec=\"cat examples/additional-namespaces-servicemonitor.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n    prometheus+:: {\n      namespaces+: ['my-namespace', 'my-second-namespace'],\n    },\n  },\n  exampleApplication: {\n    serviceMonitorMyNamespace: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'ServiceMonitor',\n      metadata: {\n        name: 'my-servicemonitor',\n        namespace: 'my-namespace',\n      },\n      spec: {\n        jobLabel: 'app',\n        endpoints: [\n          {\n            port: 'http-metrics',\n          },\n        ],\n        selector: {\n          matchLabels: {\n            'app.kubernetes.io/name': 'myapp',\n          },\n        },\n      },\n    },\n  },\n\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n```\n\n> NOTE: make sure your service resources have the right labels (eg. `'app': 'myapp'`) applied. Prometheus uses kubernetes labels to discover resources inside the namespaces.\n"
  },
  {
    "path": "docs/customizations/monitoring-all-namespaces.md",
    "content": "### Monitoring all namespaces\n\nIn case you want to monitor all namespaces in a cluster, you can add the following mixin. Also, make sure to empty the namespaces defined in prometheus so that roleBindings are not created against them.\n\n```jsonnet mdox-exec=\"cat examples/all-namespaces.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/all-namespaces.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n    prometheus+: {\n      namespaces: [],\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\n> NOTE: This configuration can potentially make your cluster insecure especially in a multi-tenant cluster. This is because this gives Prometheus visibility over the whole cluster which might not be expected in a scenario when certain namespaces are locked down for security reasons.\n\nProceed with [creating ServiceMonitors for the services in the namespaces](monitoring-additional-namespaces.md#defining-the-servicemonitor-for-each-additional-namespace) you actually want to monitor\n"
  },
  {
    "path": "docs/customizations/node-ports.md",
    "content": "### NodePorts\n\nAnother mixin that may be useful for exploring the stack is to expose the UIs of Prometheus, Alertmanager and Grafana on NodePorts:\n\n```jsonnet mdox-exec=\"cat examples/jsonnet-snippets/node-ports.jsonnet\"\n(import 'kube-prometheus/main.libsonnet') +\n(import 'kube-prometheus/addons/node-ports.libsonnet')\n```\n"
  },
  {
    "path": "docs/customizations/platform-specific.md",
    "content": "### Running kube-prometheus on specific platforms\n\nA common example is that not all Kubernetes clusters are created exactly the same way, meaning the configuration to monitor them may be slightly different. For the following clusters there are mixins available to easily configure them:\n\n* aws\n* bootkube\n* eks\n* gke\n* kops\n* kops_coredns\n* kubeadm\n* kubespray\n\nThese mixins are selectable via the `platform` field of kubePrometheus:\n\n```jsonnet mdox-exec=\"cat examples/jsonnet-snippets/platform.jsonnet\"\n(import 'kube-prometheus/main.libsonnet') +\n{\n  values+:: {\n    common+: {\n      platform: 'example-platform',\n    },\n  },\n}\n```\n"
  },
  {
    "path": "docs/customizations/pod-anti-affinity.md",
    "content": "### Pod Anti-Affinity\n\nTo prevent `Prometheus` and `Alertmanager` instances from being deployed onto the same node when\npossible, one can include the [kube-prometheus-anti-affinity.libsonnet](https://github.com/prometheus-operator/kube-prometheus/tree/main/jsonnet/kube-prometheus/addons/anti-affinity.libsonnet) mixin:\n\n```jsonnet mdox-exec=\"cat examples/anti-affinity.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/anti-affinity.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n"
  },
  {
    "path": "docs/customizations/prometheus-agent.md",
    "content": "### Prometheus-agent mode\n\n***ATTENTION***: Although it is possible to run Prometheus in Agent mode with Prometheus-Operator, it requires strategic merge patches. This practice is not recommended and we do not provide support if Prometheus doesn't work as you expect. **Try it at your own risk!**\n\n```jsonnet mdox-exec=\"cat examples/prometheus-agent.jsonnet\"\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      prometheus+: {\n        resources: {\n          requests: { memory: '100Mi' },\n        },\n        enableFeatures: ['agent'],\n      },\n    },\n    prometheus+: {\n      prometheus+: {\n        spec+: {\n          replicas: 1,\n          alerting:: {},\n          ruleSelector:: {},\n          remoteWrite: [{\n            url: 'http://remote-write-url.com',\n          }],\n          containers+: [\n            {\n              name: 'prometheus',\n              args+: [\n                '--config.file=/etc/prometheus/config_out/prometheus.env.yaml',\n                '--storage.agent.path=/prometheus',\n                '--enable-feature=agent',\n                '--web.enable-lifecycle',\n              ],\n            },\n          ],\n        },\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n```\n"
  },
  {
    "path": "docs/customizations/static-etcd-configuration.md",
    "content": "### Static etcd configuration\n\nIn order to configure a static etcd cluster to scrape there is a simple [static-etcd.libsonnet](https://github.com/prometheus-operator/kube-prometheus/tree/main/jsonnet/kube-prometheus/addons/static-etcd.libsonnet) mixin prepared.\n\nAn example of how to use it can be seen below:\n\n```jsonnet mdox-exec=\"cat examples/etcd.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/static-etcd.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n\n    etcd+: {\n      // Configure this to be the IP(s) to scrape - i.e. your etcd node(s) (use commas to separate multiple values).\n      ips: ['127.0.0.1'],\n\n      // Reference info:\n      //  * https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec (has endpoints)\n      //  * https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint (has tlsConfig)\n      //  * https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#tlsconfig (has: caFile, certFile, keyFile, serverName, & insecureSkipVerify)\n\n      // Set these three variables to the fully qualified directory path on your work machine to the certificate files that are valid to scrape etcd metrics with (check the apiserver container).\n      // Most likely these certificates are generated somewhere in an infrastructure repository, so using the jsonnet `importstr` function can\n      // be useful here. (Kube-aws stores these three files inside the credential folder.)\n      // All the sensitive information on the certificates will end up in a Kubernetes Secret.\n      clientCA: importstr 'etcd-client-ca.crt',\n      clientKey: importstr 'etcd-client.key',\n      clientCert: importstr 'etcd-client.crt',\n\n      // Note that you should specify a value EITHER for 'serverName' OR for 'insecureSkipVerify'. (Don't specify a value for both of them, and don't specify a value for neither of them.)\n      // * Specifying serverName: Ideally you should provide a valid value for serverName (and then insecureSkipVerify should be left as false - so that serverName gets used).\n      // * Specifying insecureSkipVerify: insecureSkipVerify is only to be used (i.e. set to true) if you cannot (based on how your etcd certificates were created) use a Subject Alternative Name.\n      // * If you specify a value:\n      //     ** for both of these variables: When 'insecureSkipVerify: true' is specified, then also specifying a value for serverName won't hurt anything but it will be ignored.\n      //     ** for neither of these variables: then you'll get authentication errors on the prom '/targets' page with your etcd targets.\n\n      // A valid name (DNS or Subject Alternative Name) that the client (i.e. prometheus) will use to verify the etcd TLS certificate.\n      //  * Note that doing `nslookup etcd.kube-system.svc.cluster.local` (on a pod in a K8s cluster where kube-prometheus has been installed) shows that kube-prometheus sets up this hostname.\n      //  * `openssl x509 -noout -text -in etcd-client.pem` will print the Subject Alternative Names.\n      serverName: 'etcd.kube-system.svc.cluster.local',\n\n      // When insecureSkipVerify isn't specified, the default value is \"false\".\n      //insecureSkipVerify: true,\n\n      // In case you have generated the etcd certificate with kube-aws:\n      //  * If you only have one etcd node, you can use the value from 'etcd.internalDomainName' (specified in your kube-aws cluster.yaml) as the value for 'serverName'.\n      //  * But if you have multiple etcd nodes, you will need to use 'insecureSkipVerify: true' (if using default certificate generators method), as the valid certificate domain\n      //    will be different for each etcd node. (kube-aws default certificates are not valid against the IP - they were created for the DNS.)\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\nIf you'd like to monitor an etcd instance that lives outside the cluster, see [Monitoring external etcd](../monitoring-external-etcd.md) for more information.\n\n> Note that monitoring etcd in minikube is currently not possible because of how etcd is setup. (minikube's etcd binds to 127.0.0.1:2379 only, and within host networking namespace.)\n"
  },
  {
    "path": "docs/customizations/strip-limits.md",
    "content": "### Stripping container resource limits\n\nSometimes in small clusters, the CPU/memory limits can get high enough for alerts to be fired continuously. To prevent this, one can strip off the predefined limits.\nTo do that, one can import the following mixin\n\n```jsonnet mdox-exec=\"cat examples/strip-limits.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/strip-limits.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n"
  },
  {
    "path": "docs/customizations/using-custom-container-registry.md",
    "content": "### Internal Registry\n\nSome Kubernetes installations source all their images from an internal registry. kube-prometheus supports this use case and helps the user synchronize every image it uses to the internal registry and generate manifests pointing at the internal registry.\n\nTo produce the `docker pull/tag/push` commands that will synchronize upstream images to `internal-registry.com/organization` (after having run the `jb` command to populate the vendor directory):\n\n```shell\n$ jsonnet -J vendor -S --tla-str repository=internal-registry.com/organization examples/sync-to-internal-registry.jsonnet\n$ docker pull k8s.gcr.io/addon-resizer:1.8.4\n$ docker tag k8s.gcr.io/addon-resizer:1.8.4 internal-registry.com/organization/addon-resizer:1.8.4\n$ docker push internal-registry.com/organization/addon-resizer:1.8.4\n$ docker pull quay.io/prometheus/alertmanager:v0.16.2\n$ docker tag quay.io/prometheus/alertmanager:v0.16.2 internal-registry.com/organization/alertmanager:v0.16.2\n$ docker push internal-registry.com/organization/alertmanager:v0.16.2\n...\n```\n\nThe output of this command can be piped to a shell to be executed by appending `| sh`.\n\nThen to generate manifests with `internal-registry.com/organization`, use the `withImageRepository` mixin:\n\n```jsonnet mdox-exec=\"cat examples/internal-registry.jsonnet\"\nlocal mixin = import 'kube-prometheus/addons/config-mixins.libsonnet';\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n} + mixin.withImageRepository('internal-registry.com/organization');\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n"
  },
  {
    "path": "docs/customizing.md",
    "content": "# Customizing Kube-Prometheus\n\nThis section:\n* describes how to customize the kube-prometheus library via compiling the kube-prometheus manifests yourself (as an alternative to the [README.md quickstart section](../README.md#quickstart)).\n* still doesn't require you to make a copy of this entire repository, but rather only a copy of a few select files.\n\n## Installing\n\nThe content of this project consists of a set of [jsonnet](http://jsonnet.org/) files making up a library to be consumed.\n\nInstall this library in your own project with [jsonnet-bundler](https://github.com/jsonnet-bundler/jsonnet-bundler#install) (the jsonnet package manager):\n\n```shell\n$ mkdir my-kube-prometheus; cd my-kube-prometheus\n$ jb init  # Creates the initial/empty `jsonnetfile.json`\n# Install the kube-prometheus dependency\n$ jb install github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus@main # Creates `vendor/` & `jsonnetfile.lock.json`, and fills in `jsonnetfile.json`\n\n$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/example.jsonnet -O example.jsonnet\n$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/build.sh -O build.sh\n$ chmod +x build.sh\n```\n\n> `jb` can be installed with `go install -a github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest`\n\n> An e.g. of how to install a given version of this library: `jb install github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus@main`\n\nIn order to update the kube-prometheus dependency, simply use the jsonnet-bundler update functionality:\n\n```shell\n$ jb update\n```\n\n## Generating\n\ne.g. of how to compile the manifests: `./build.sh example.jsonnet`\n\n> before compiling, install `gojsontoyaml` tool with `go install github.com/brancz/gojsontoyaml@latest` and `jsonnet` with `go install github.com/google/go-jsonnet/cmd/jsonnet@latest`\n\nHere's [example.jsonnet](../example.jsonnet):\n\n> Note: some of the following components must be configured beforehand. See [configuration](#configuring) and [customization-examples](customizations).\n\n```jsonnet mdox-exec=\"cat example.jsonnet\"\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // Uncomment the following imports to enable its patches\n  // (import 'kube-prometheus/addons/anti-affinity.libsonnet') +\n  // (import 'kube-prometheus/addons/managed-cluster.libsonnet') +\n  // (import 'kube-prometheus/addons/node-ports.libsonnet') +\n  // (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  // (import 'kube-prometheus/addons/custom-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/external-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/pyrra.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n```\n\nAnd here's the [build.sh](../build.sh) script (which uses `vendor/` to render all manifests in a json structure of `{filename: manifest-content}`):\n\n```sh mdox-exec=\"cat ./build.sh\"\n#!/usr/bin/env bash\n\n# This script uses arg $1 (name of *.jsonnet file to use) to generate the manifests/*.yaml files.\n\nset -e\nset -x\n# only exit with zero if all commands of the pipeline exit successfully\nset -o pipefail\n\n# Make sure to use project tooling\nPATH=\"$(pwd)/tmp/bin:${PATH}\"\n\n# Make sure to start with a clean 'manifests' dir\nrm -rf manifests\nmkdir -p manifests/setup\n\n# Calling gojsontoyaml is optional, but we would like to generate yaml, not json\njsonnet -J vendor -m manifests \"${1-example.jsonnet}\" | xargs -I{} sh -c 'cat {} | gojsontoyaml > {}.yaml' -- {}\n\n# Make sure to remove json files\nfind manifests -type f ! -name '*.yaml' -delete\nrm -f kustomization\n\n```\n\n> Note you need `jsonnet` (`go install github.com/google/go-jsonnet/cmd/jsonnet@latest`) and `gojsontoyaml` (`go install github.com/brancz/gojsontoyaml@latest`) installed to run `build.sh`. If you just want json output, not yaml, then you can skip the pipe and everything afterwards.\n\nThis script runs the jsonnet code, then reads each key of the generated json and uses that as the file name, and writes the value of that key to that file, and converts each json manifest to yaml.\n\n## Configuring\n\nJsonnet has the concept of hidden fields. These are fields, that are not going to be rendered in a result. This is used to configure the kube-prometheus components in jsonnet. In the example jsonnet code of the above [Generating section](#generating), you can see an example of this, where the `namespace` is being configured to be `monitoring`. In order to not override the whole object, use the `+::` construct of jsonnet, to merge objects, this way you can override individual settings, but retain all other settings and defaults.\n\nThe available fields and their default values can be seen in [main.libsonnet](../jsonnet/kube-prometheus/main.libsonnet). Note that many of the fields get their default values from variables, and for example the version numbers are imported from [versions.json](../jsonnet/kube-prometheus/versions.json).\n\nConfiguration is mainly done in the `values` map. You can see this being used in the `example.jsonnet` to set the namespace to `monitoring`. This is done in the `common` field, which all other components take their default value from. See for example how Alertmanager is configured in `main.libsonnet`:\n\n```\n    alertmanager: {\n      name: 'main',\n      // Use the namespace specified under values.common by default.\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.alertmanager,\n      image: $.values.common.images.alertmanager,\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n    },\n```\n\nThe grafana definition is located in a different project (https://github.com/brancz/kubernetes-grafana ), but needed configuration can be customized from the same top level `values` field. For example to allow anonymous access to grafana, add the following `values` section:\n\n```\n      grafana+:: {\n        config: { // http://docs.grafana.org/installation/configuration/\n          sections: {\n            \"auth.anonymous\": {enabled: true},\n          },\n        },\n      },\n```\n\n## Apply the kube-prometheus stack\n\nThe previous generation step has created a bunch of manifest files in the manifest/ folder.\nNow simply use `kubectl` to install Prometheus and Grafana as per your configuration:\n\n```shell\n# Update the namespace and CRDs, and then wait for them to be available before creating the remaining resources\n$ kubectl apply --server-side -f manifests/setup\n$ kubectl apply -f manifests/\n```\n\n> Note that due to some CRD size we are using kubectl server-side apply feature which is generally available since\n> kubernetes 1.22. If you are using previous kubernetes versions this feature may not be available and you would need to\n> use `kubectl create` instead.\n\nAlternatively, the resources in both folders can be applied with a single command\n`kubectl apply --server-side -Rf manifests`, but it may be necessary to run the command multiple times for all components to\nbe created successfully.\n\nCheck the monitoring namespace (or the namespace you have specific in `namespace: `) and make sure the pods are running. Prometheus and Grafana should be up and running soon.\n\n## Minikube Example\n\nTo use an easy to reproduce example, see [minikube.jsonnet](../examples/minikube.jsonnet), which uses the minikube setup as demonstrated in [Prerequisites](../README.md#prerequisites). Because we would like easy access to our Prometheus, Alertmanager and Grafana UIs, `minikube.jsonnet` exposes the services as NodePort type services.\n"
  },
  {
    "path": "docs/deploy-kind.md",
    "content": "---\nweight: 301\ntoc: true\ntitle: Deploy to kind\nmenu:\n    docs:\n        parent: kube\nlead: This guide will help you deploying kube-prometheus on Kubernetes kind.\nimages: []\ndraft: false\ndescription: This guide will help you deploying kube-prometheus on Kubernetes kind.\n---\n\nTime to explain how!\n\nYour chance of [**contributing**](https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/deploy-kind.md)!\n"
  },
  {
    "path": "docs/endpoints-migration.md",
    "content": "# Migration from Endpoints to EndpointSlice\n\n`kube-prometheus` 0.17+ automatically configures Prometheus to use EndpointSlice instead of Endpoints for Kubernetes service discovery (Endpoints have been deprecated in Kubernetes 1.33).\n\nWhile the migration should be seamless for \"regular\" pods, it requires a few manual steps for components running as host services (e.g. node_exporter and kubelet):\n1. The node_exporter and kubelet ServiceMonitors rely on the Prometheus operator's kubelet controller which manages the `kube-system/kubelet` Service.\n2. With `kube-prometheus` 0.17, the Prometheus operator starts with both `--kubelet-endpoints=true` and `--kubelet-endpointslice=true` to ensure that a) the operator synchronizes the EndpointSlice object(s) backing the `kube-system/kubelet` Service and b) Kubernetes stops mirroring the `kube-system/kubelet` Endpoints object to EndpointSlice object(s) (otherwise the operator and kube-controller-manager would fight for the same resources).\n3. After verifying that all targets are correctly discovered, it is ok to modify the operator's deployment and use `--kubelet-endpoints=false` instead. This will become the default in a future version of `kube-prometheus`.\n4. The `kube-system/kubelet` Endpoints object should be removed manually.\n\nTo verify the status of the Endpoints and EndpointSlice objects, run:\n\n```shell\nkubectl get -n kube-system endpoints kubelet\nkubectl get -n kube-system endpointslice -l endpointslice.kubernetes.io/managed-by=prometheus-operator\n```\n"
  },
  {
    "path": "docs/kube-prometheus-on-kubeadm.md",
    "content": "---\nweight: 302\ntoc: true\ntitle: Deploy to kubeadm\nmenu:\n    docs:\n        parent: kube\nlead: This guide will help you deploying kube-prometheus on Kubernetes kubeadm.\nimages: []\ndraft: false\ndescription: This guide will help you deploying kube-prometheus on Kubernetes kubeadm.\n---\n\nThe [kubeadm](https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/) tool is linked by Kubernetes as the offical way to deploy and manage self-hosted clusters. kubeadm does a lot of heavy lifting by automatically configuring your Kubernetes cluster with some common options. This guide is intended to show you how to deploy Prometheus, Prometheus Operator and Kube Prometheus to get you started monitoring your cluster that was deployed with kubeadm.\n\nThis guide assumes you have a basic understanding of how to use the functionality the Prometheus Operator implements. If you haven't yet, we recommend reading through the [getting started guide](https://prometheus-operator.dev/docs/platform/platform-guide/) as well as the [alerting guide](https://prometheus-operator.dev/docs/developer/alerting/).\n\n## kubeadm Pre-requisites\n\nThis guide assumes you have some familiarity with `kubeadm` or at least have deployed a cluster using `kubeadm`. By default, `kubeadm` does not expose two of the services that we will be monitoring. Therefore, in order to get the most out of the `kube-prometheus` package, we need to make some quick tweaks to the Kubernetes cluster. Since we will be monitoring the `kube-controller-manager` and `kube-scheduler`, we must expose them to the cluster.\n\nBy default, `kubeadm` runs these pods on your master and bound to `127.0.0.1`. There are a couple of ways to change this. The recommended way to change these features is to use the [kubeadm config file](https://kubernetes.io/docs/reference/generated/kubeadm/#config-file). An example configuration file can be used:\n\n```yaml\napiVersion: kubeadm.k8s.io/v1beta2\nkind: ClusterConfiguration\ncontrolPlaneEndpoint: \"192.168.1.173:6443\"\napiServer:\n  extraArgs:\n    authorization-mode: \"Node,RBAC\"\ncontrollerManager:\n  extraArgs:\n    bind-address: \"0.0.0.0\"\nscheduler:\n  extraArgs:\n    bind-address: \"0.0.0.0\"\ncertificatesDir: \"/etc/kubernetes/pki\"\netcd:\n  # one of local or external\n  local:\n    dataDir: \"/var/lib/etcd\"\nkubernetesVersion: \"v1.23.1\"\nnetworking:\n  dnsDomain: \"cluster.local\"\n  serviceSubnet: \"10.96.0.0/12\"\nimageRepository: \"registry.k8s.io\"\n```\n\nNotice the `.scheduler.extraArgs` and `.controllerManager.extraArgs`. This exposes the `kube-controller-manager` and `kube-scheduler` services to the rest of the cluster. If you have kubernetes core components as pods in the kube-system namespace, ensure that the `kube-prometheus-exporter-kube-scheduler` and `kube-prometheus-exporter-kube-controller-manager` services' `spec.selector` values match those of pods.\n\nIn previous versions of Kubernetes, we had to make a change to the `kubelet` setting with regard to `cAdvisor` monitoring on the control-plane as well as all the nodes. But this is **no longer required due to [the change of Kubernetes](https://github.com/kubernetes/kubernetes/issues/56523)**.\n\nIn case you already have a Kubernetes deployed with kubeadm, change the address kube-controller-manager and kube-scheduler listens in addition to previous kubelet change:\n\n```\nsed -e \"s/- --bind-address=127.0.0.1/- --bind-address=0.0.0.0/\" -i /etc/kubernetes/manifests/kube-controller-manager.yaml\nsed -e \"s/- --bind-address=127.0.0.1/- --bind-address=0.0.0.0/\" -i /etc/kubernetes/manifests/kube-scheduler.yaml\n```\n\nWith these changes, your Kubernetes cluster is ready.\n\n## Metric Sources\n\nMonitoring a Kubernetes cluster with Prometheus is a natural choice as Kubernetes components themselves are instrumented with Prometheus metrics, therefore those components simply have to be discovered by Prometheus and most of the cluster is monitored.\n\nMetrics that are rather about cluster state than a single component's metrics is exposed by the add-on component [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics).\n\nAdditionally, to have an overview of cluster nodes' resources the Prometheus [node_exporter](https://github.com/prometheus/node_exporter) is used. The node_exporter allows monitoring a node's resources: CPU, memory and disk utilization and more.\n\nOnce you complete this guide you will monitor the following:\n\n* cluster state via kube-state-metrics\n* nodes via the node_exporter\n* kubelets\n* apiserver\n* kube-scheduler\n* kube-controller-manager\n\n## Getting Up and Running Fast with Kube-Prometheus\n\nTo help get started more quickly with monitoring Kubernetes clusters, [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) was created. It is a collection of manifests including dashboards and alerting rules that can easily be deployed. It utilizes the Prometheus Operator and all the manifests demonstrated in this guide.\n\nThis section represent a quick installation and is not intended to teach you about all the components. The easiest way to get started is to clone this repository and use the `kube-prometheus` section of the code.\n\n```\ngit clone https://github.com/prometheus-operator/kube-prometheus\ncd kube-prometheus/\n```\n\nFirst, create the namespace in which you want the monitoring tool suite to be running.\n\n```\nexport NAMESPACE='monitoring'\nkubectl create namespace \"$NAMESPACE\"\n```\n\nNow we will create the components for the Prometheus operator\n\n```\nkubectl --namespace=\"$NAMESPACE\" apply -f manifests/prometheus-operator\n```\n\nThis will create all the Prometheus Operator components. You might need to wait a short amount of time before the Custom Resource Definitions are available in the cluster. You can wait for them:\n\n```\nuntil kubectl --namespace=\"$NAMESPACE\" get alertmanagers.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf \".\"; done\n```\n\nNext, we will install the node exporter and then kube-state-metrics:\n\n```\nkubectl --namespace=\"$NAMESPACE\" apply -f manifests/node-exporter\nkubectl --namespace=\"$NAMESPACE\" apply -f manifests/kube-state-metrics\n```\n\nThen, we can deploy the grafana credentials. By default, the username/password will be `admin/admin`, you should change these for your production clusters.\n\n```\nkubectl --namespace=\"$NAMESPACE\" apply -f manifests/grafana/grafana-credentials.yaml\n```\n\nThen install grafana itself:\n\n```\nkubectl --namespace=\"$NAMESPACE\" apply -f manifests/grafana\n```\n\nNext up is the `Prometheus` object itself. We will deploy the application, and then the roles/role-bindings.\n\n```\nfind manifests/prometheus -type f ! -name prometheus-k8s-roles.yaml ! -name prometheus-k8s-role-bindings.yaml -exec kubectl --namespace \"$NAMESPACE\" apply -f {} \\;\nkubectl apply -f manifests/prometheus/prometheus-k8s-roles.yaml\nkubectl apply -f manifests/prometheus/prometheus-k8s-role-bindings.yaml\n```\n\nFinally, install the [Alertmanager](https://prometheus-operator.dev/docs/developer/alerting)\n\n```\nkubectl --namespace=\"$NAMESPACE\" apply -f manifests/alertmanager\n```\n\nNow you should have a working cluster. After all the pods are ready, you should be able to reach:\n\n* Prometheus UI on node port `30900`\n* Alertmanager UI on node port `30903`\n* Grafana on node port `30902`\n\nThese can of course be changed via the Service definitions. It is recommended to look at the [Exposing Prometheus and Alert Manager](https://prometheus-operator.dev/docs/platform/exposing-prometheus-and-alertmanager/) documentation for more detailed information on how to expose these services.\n"
  },
  {
    "path": "docs/migration-example/my.release-0.3.jsonnet",
    "content": "// Has the following customisations\n// \tCustom alert manager config\n// \tIngresses for the alert manager, prometheus and grafana\n// \tGrafana admin user password\n// \tCustom prometheus rules\n// \tCustom grafana dashboards\n// \tCustom prometheus config - Data retention, memory, etc.\n//\tNode exporter role and role binding so we can use a PSP for the node exporter\n\n\n// External variables\n// See https://jsonnet.org/learning/tutorial.html\nlocal cluster_identifier = std.extVar('cluster_identifier');\nlocal etcd_ip = std.extVar('etcd_ip');\nlocal etcd_tls_ca = std.extVar('etcd_tls_ca');\nlocal etcd_tls_cert = std.extVar('etcd_tls_cert');\nlocal etcd_tls_key = std.extVar('etcd_tls_key');\nlocal grafana_admin_password = std.extVar('grafana_admin_password');\nlocal prometheus_data_retention_period = std.extVar('prometheus_data_retention_period');\nlocal prometheus_request_memory = std.extVar('prometheus_request_memory');\n\n\n// Derived variables\nlocal alert_manager_host = 'alertmanager.' + cluster_identifier + '.myorg.local';\nlocal grafana_host = 'grafana.' + cluster_identifier + '.myorg.local';\nlocal prometheus_host = 'prometheus.' + cluster_identifier + '.myorg.local';\n\n\n// Imports\nlocal k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';\nlocal ingress = k.extensions.v1beta1.ingress;\nlocal ingressRule = ingress.mixin.spec.rulesType;\nlocal ingressRuleHttpPath = ingressRule.mixin.http.pathsType;\nlocal ingressTls = ingress.mixin.spec.tlsType;\nlocal role = k.rbac.v1.role;\nlocal roleBinding = k.rbac.v1.roleBinding;\nlocal roleRulesType = k.rbac.v1.role.rulesType;\n\n\nlocal kp =\n  (import 'kube-prometheus/kube-prometheus.libsonnet') +\n  (import 'kube-prometheus/kube-prometheus-kubeadm.libsonnet') +\n  (import 'kube-prometheus/kube-prometheus-static-etcd.libsonnet') +\n\n  {\n    _config+:: {\n      // Override namespace\n      namespace: 'monitoring',\n\n\n      // Override alert manager config\n      // See https://github.com/coreos/kube-prometheus/tree/master/examples/alertmanager-config-external.jsonnet\n      alertmanager+: {\n        config: importstr 'alertmanager.yaml',\n      },\n\n      // Override etcd config\n      // See https://github.com/coreos/kube-prometheus/blob/master/jsonnet/kube-prometheus/kube-prometheus-static-etcd.libsonnet\n      // See https://github.com/coreos/kube-prometheus/blob/master/examples/etcd-skip-verify.jsonnet\n      etcd+:: {\n        clientCA: etcd_tls_ca,\n        clientCert: etcd_tls_cert,\n        clientKey: etcd_tls_key,\n        ips: [etcd_ip],\n      },\n\n      // Override grafana config\n      // anonymous access\n      // \tSee http://docs.grafana.org/installation/configuration/\n      // \tSee http://docs.grafana.org/auth/overview/#anonymous-authentication\n      // admin_password\n      // \tSee http://docs.grafana.org/installation/configuration/#admin-password\n      grafana+:: {\n        config: {\n          sections: {\n            'auth.anonymous': {\n              enabled: true,\n            },\n            security: {\n              admin_password: grafana_admin_password,\n            },\n          },\n        },\n\n\n      },\n    },\n\n    // Additional grafana dashboards\n    grafanaDashboards+:: {\n      'my-specific.json': (import 'my-grafana-dashboard-definitions.json'),\n    },\n\n    // Alert manager needs an externalUrl\n    alertmanager+:: {\n      alertmanager+: {\n        spec+: {\n          // See https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md\n          // See https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/exposing-prometheus-and-alertmanager.md\n          externalUrl: 'https://' + alert_manager_host,\n        },\n      },\n    },\n\n\n    // Add additional ingresses\n    // See https://github.com/coreos/kube-prometheus/tree/master/examples/ingress.jsonnet\n    ingress+:: {\n      alertmanager:\n        ingress.new() +\n\n\n        ingress.mixin.metadata.withName('alertmanager') +\n        ingress.mixin.metadata.withNamespace($._config.namespace) +\n        ingress.mixin.metadata.withAnnotations({\n          'kubernetes.io/ingress.class': 'nginx-api',\n        }) +\n\n        ingress.mixin.spec.withRules(\n          ingressRule.new() +\n          ingressRule.withHost(alert_manager_host) +\n          ingressRule.mixin.http.withPaths(\n            ingressRuleHttpPath.new() +\n\n\n            ingressRuleHttpPath.mixin.backend.withServiceName('alertmanager-operated') +\n\n            ingressRuleHttpPath.mixin.backend.withServicePort(9093)\n          ),\n        ) +\n\n\n        // Note we do not need a TLS secretName here as we are going to use the nginx-ingress default secret which is a wildcard\n        // secretName would need to be in the same namespace at this time, see https://github.com/kubernetes/ingress-nginx/issues/2371\n        ingress.mixin.spec.withTls(\n          ingressTls.new() +\n          ingressTls.withHosts(alert_manager_host)\n        ),\n\n\n      grafana:\n        ingress.new() +\n\n\n        ingress.mixin.metadata.withName('grafana') +\n        ingress.mixin.metadata.withNamespace($._config.namespace) +\n        ingress.mixin.metadata.withAnnotations({\n          'kubernetes.io/ingress.class': 'nginx-api',\n        }) +\n\n        ingress.mixin.spec.withRules(\n          ingressRule.new() +\n          ingressRule.withHost(grafana_host) +\n          ingressRule.mixin.http.withPaths(\n            ingressRuleHttpPath.new() +\n\n\n            ingressRuleHttpPath.mixin.backend.withServiceName('grafana') +\n\n            ingressRuleHttpPath.mixin.backend.withServicePort(3000)\n          ),\n        ) +\n\n\n        // Note we do not need a TLS secretName here as we are going to use the nginx-ingress default secret which is a wildcard\n        // secretName would need to be in the same namespace at this time, see https://github.com/kubernetes/ingress-nginx/issues/2371\n        ingress.mixin.spec.withTls(\n          ingressTls.new() +\n          ingressTls.withHosts(grafana_host)\n        ),\n\n\n      prometheus:\n        ingress.new() +\n\n\n        ingress.mixin.metadata.withName('prometheus') +\n        ingress.mixin.metadata.withNamespace($._config.namespace) +\n        ingress.mixin.metadata.withAnnotations({\n          'kubernetes.io/ingress.class': 'nginx-api',\n        }) +\n        ingress.mixin.spec.withRules(\n          ingressRule.new() +\n\n          ingressRule.withHost(prometheus_host) +\n          ingressRule.mixin.http.withPaths(\n            ingressRuleHttpPath.new() +\n\n\n            ingressRuleHttpPath.mixin.backend.withServiceName('prometheus-operated') +\n\n            ingressRuleHttpPath.mixin.backend.withServicePort(9090)\n          ),\n        ) +\n\n\n        // Note we do not need a TLS secretName here as we are going to use the nginx-ingress default secret which is a wildcard\n        // secretName would need to be in the same namespace at this time, see https://github.com/kubernetes/ingress-nginx/issues/2371\n        ingress.mixin.spec.withTls(\n          ingressTls.new() +\n          ingressTls.withHosts(prometheus_host)\n        ),\n    },\n\n\n    // Node exporter PSP role and role binding\n    // Add a new top level field for this, the \"node-exporter\" PSP already exists, so not defining here just referencing\n    // See https://github.com/coreos/prometheus-operator/issues/787\n    nodeExporterPSP: {\n      role:\n        role.new() +\n\n\n        role.mixin.metadata.withName('node-exporter-psp') +\n        role.mixin.metadata.withNamespace($._config.namespace) +\n        role.withRules([\n          roleRulesType.new() +\n          roleRulesType.withApiGroups(['policy']) +\n          roleRulesType.withResources(['podsecuritypolicies']) +\n          roleRulesType.withVerbs(['use']) +\n          roleRulesType.withResourceNames(['node-exporter']),\n        ]),\n\n      roleBinding:\n        roleBinding.new() +\n        roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +\n\n\n        roleBinding.mixin.metadata.withName('node-exporter-psp') +\n        roleBinding.mixin.metadata.withNamespace($._config.namespace) +\n\n\n        roleBinding.mixin.roleRef.withName('node-exporter-psp') +\n        roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +\n\n\n        roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'node-exporter' }]),\n\n\n    },\n\n\n    // Prometheus needs some extra custom config\n    prometheus+:: {\n      prometheus+: {\n        spec+: {\n          // See https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\n          externalLabels: {\n            cluster: cluster_identifier,\n          },\n          // See https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md\n          // See https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/exposing-prometheus-and-alertmanager.md\n          externalUrl: 'https://' + prometheus_host,\n          // Override reuest memory\n          resources: {\n            requests: {\n              memory: prometheus_request_memory,\n            },\n          },\n          // Override data retention period\n          retention: prometheus_data_retention_period,\n        },\n      },\n    },\n\n\n    // Additional prometheus rules\n    // See https://github.com/coreos/kube-prometheus/docs/developing-prometheus-rules-and-grafana-dashboards.md\n    // cat my-prometheus-rules.yaml | gojsontoyaml -yamltojson | jq . > my-prometheus-rules.json\n    prometheusRules+:: {\n\n\n      groups+: import 'my-prometheus-rules.json',\n\n\n    },\n  };\n\n\n// Render\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n\n\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n\n\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n\n{ [name + '-ingress']: kp.ingress[name] for name in std.objectFields(kp.ingress) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['node-exporter-psp-' + name]: kp.nodeExporterPSP[name] for name in std.objectFields(kp.nodeExporterPSP) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "docs/migration-example/my.release-0.8.jsonnet",
    "content": "// Has the following customisations\n// \tCustom alert manager config\n// \tIngresses for the alert manager, prometheus and grafana\n// \tGrafana admin user password\n// \tCustom prometheus rules\n// \tCustom grafana dashboards\n// \tCustom prometheus config - Data retention, memory, etc.\n//\tNode exporter role and role binding so we can use a PSP for the node exporter\n\n// for help with expected content, see https://github.com/thaum-xyz/ankhmorpork\n\n// External variables\n// See https://jsonnet.org/learning/tutorial.html\nlocal cluster_identifier = std.extVar('cluster_identifier');\nlocal etcd_ip = std.extVar('etcd_ip');\nlocal etcd_tls_ca = std.extVar('etcd_tls_ca');\nlocal etcd_tls_cert = std.extVar('etcd_tls_cert');\nlocal etcd_tls_key = std.extVar('etcd_tls_key');\nlocal grafana_admin_password = std.extVar('grafana_admin_password');\nlocal prometheus_data_retention_period = std.extVar('prometheus_data_retention_period');\nlocal prometheus_request_memory = std.extVar('prometheus_request_memory');\n\n\n// Derived variables\nlocal alert_manager_host = 'alertmanager.' + cluster_identifier + '.myorg.local';\nlocal grafana_host = 'grafana.' + cluster_identifier + '.myorg.local';\nlocal prometheus_host = 'prometheus.' + cluster_identifier + '.myorg.local';\n\n\n// ksonnet no longer required\n\n\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // kubeadm now achieved by setting platform value - see 9 lines below\n  (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  (import 'kube-prometheus/addons/podsecuritypolicies.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n\n      // Add kubeadm platform-specific items,\n      // including kube-contoller-manager and kube-scheduler discovery\n      kubePrometheus+: {\n        platform: 'kubeadm',\n      },\n\n      // Override alert manager config\n      // See https://github.com/prometheus-operator/kube-prometheus/blob/main/examples/alertmanager-config-external.jsonnet\n      alertmanager+: {\n        config: importstr 'alertmanager.yaml',\n      },\n\n      // Override etcd config\n      // See https://github.com/prometheus-operator/kube-prometheus/blob/main/jsonnet/kube-prometheus/addons/static-etcd.libsonnet\n      // See https://github.com/prometheus-operator/kube-prometheus/blob/main/examples/etcd-skip-verify.jsonnet\n      etcd+:: {\n        clientCA: etcd_tls_ca,\n        clientCert: etcd_tls_cert,\n        clientKey: etcd_tls_key,\n        ips: [etcd_ip],\n      },\n\n      // Override grafana config\n      // anonymous access\n      // \tSee http://docs.grafana.org/installation/configuration/\n      // \tSee http://docs.grafana.org/auth/overview/#anonymous-authentication\n      // admin_password\n      // \tSee http://docs.grafana.org/installation/configuration/#admin-password\n      grafana+:: {\n        config: {\n          sections: {\n            'auth.anonymous': {\n              enabled: true,\n            },\n            security: {\n              admin_password: grafana_admin_password,\n            },\n          },\n        },\n        // Additional grafana dashboards\n        dashboards+:: {\n          'my-specific.json': (import 'my-grafana-dashboard-definitions.json'),\n        },\n      },\n    },\n\n\n    // Alert manager needs an externalUrl\n    alertmanager+:: {\n      alertmanager+: {\n        spec+: {\n\n          // See https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/exposing-prometheus-alertmanager-grafana-ingress.md\n          externalUrl: 'https://' + alert_manager_host,\n        },\n      },\n    },\n\n\n    // Add additional ingresses\n    // See https://github.com/prometheus-operator/kube-prometheus/blob/main/examples/ingress.jsonnet\n    ingress+:: {\n      alertmanager: {\n        apiVersion: 'networking.k8s.io/v1',\n        kind: 'Ingress',\n        metadata: {\n          name: 'alertmanager',\n          namespace: $.values.common.namespace,\n          annotations: {\n            'kubernetes.io/ingress.class': 'nginx-api',\n          },\n        },\n        spec: {\n          rules: [{\n            host: alert_manager_host,\n            http: {\n              paths: [{\n                path: '/',\n                pathType: 'Prefix',\n                backend: {\n                  service: {\n                    name: 'alertmanager-operated',\n                    port: {\n                      number: 9093,\n                    },\n                  },\n                },\n              }],\n            },\n          }],\n          tls: [{\n\n            hosts: [alert_manager_host],\n          }],\n        },\n      },\n      grafana: {\n        apiVersion: 'networking.k8s.io/v1',\n        kind: 'Ingress',\n        metadata: {\n          name: 'grafana',\n          namespace: $.values.common.namespace,\n          annotations: {\n            'kubernetes.io/ingress.class': 'nginx-api',\n          },\n        },\n        spec: {\n          rules: [{\n            host: grafana_host,\n            http: {\n              paths: [{\n                path: '/',\n                pathType: 'Prefix',\n                backend: {\n                  service: {\n                    name: 'grafana',\n                    port: {\n                      number: 3000,\n                    },\n                  },\n                },\n              }],\n            },\n          }],\n          tls: [{\n\n            hosts: [grafana_host],\n          }],\n        },\n      },\n      prometheus: {\n        apiVersion: 'networking.k8s.io/v1',\n        kind: 'Ingress',\n        metadata: {\n          name: 'prometheus',\n          namespace: $.values.common.namespace,\n          annotations: {\n            'kubernetes.io/ingress.class': 'nginx-api',\n          },\n        },\n        spec: {\n          rules: [{\n            host: prometheus_host,\n            http: {\n              paths: [{\n                path: '/',\n                pathType: 'Prefix',\n                backend: {\n                  service: {\n                    name: 'prometheus-operated',\n                    port: {\n                      number: 9090,\n                    },\n                  },\n                },\n              }],\n            },\n          }],\n          tls: [{\n\n            hosts: [prometheus_host],\n          }],\n        },\n      },\n    },\n\n\n    // Node exporter PSP role and role binding\n    nodeExporter+: {\n      'psp-role'+: {\n        apiVersion: 'rbac.authorization.k8s.io/v1',\n        kind: 'Role',\n        metadata: {\n          name: 'node-exporter-psp',\n          namespace: $.values.common.namespace,\n        },\n        rules: [{\n          apiGroups: ['policy'],\n          resources: ['podsecuritypolicies'],\n          verbs: ['use'],\n          resourceNames: ['node-exporter'],\n        }],\n      },\n      'psp-rolebinding'+: {\n\n        apiVersion: 'rbac.authorization.k8s.io/v1',\n        kind: 'RoleBinding',\n        metadata: {\n          name: 'node-exporter-psp',\n          namespace: $.values.common.namespace,\n        },\n        roleRef: {\n          apiGroup: 'rbac.authorization.k8s.io',\n          name: 'node-exporter-psp',\n          kind: 'Role',\n        },\n        subjects: [{\n          kind: 'ServiceAccount',\n          name: 'node-exporter',\n        }],\n      },\n    },\n\n    // Prometheus needs some extra custom config\n    prometheus+:: {\n      prometheus+: {\n        spec+: {\n\n          externalLabels: {\n            cluster: cluster_identifier,\n          },\n\n          // See https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/exposing-prometheus-alertmanager-grafana-ingress.md\n          externalUrl: 'https://' + prometheus_host,\n          // Override reuest memory\n          resources: {\n            requests: {\n              memory: prometheus_request_memory,\n            },\n          },\n          // Override data retention period\n          retention: prometheus_data_retention_period,\n        },\n      },\n    },\n\n\n    // Additional prometheus rules\n    // See https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/developing-prometheus-rules-and-grafana-dashboards.md#pre-rendered-rules\n    // cat my-prometheus-rules.yaml | gojsontoyaml -yamltojson | jq . > my-prometheus-rules.json\n    prometheusMe: {\n      rules: {\n        apiVersion: 'monitoring.coreos.com/v1',\n        kind: 'PrometheusRule',\n        metadata: {\n          name: 'my-prometheus-rule',\n          namespace: $.values.common.namespace,\n          labels: {\n            'app.kubernetes.io/name': 'kube-prometheus',\n            'app.kubernetes.io/part-of': 'kube-prometheus',\n            prometheus: 'k8s',\n            role: 'alert-rules',\n          },\n        },\n        spec: {\n          groups: import 'my-prometheus-rules.json',\n        },\n      },\n    },\n  };\n\n\n// Render\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ [name + '-ingress']: kp.ingress[name] for name in std.objectFields(kp.ingress) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n+ { ['prometheus-my-' + name]: kp.prometheusMe[name] for name in std.objectFields(kp.prometheusMe) }\n"
  },
  {
    "path": "docs/migration-example/readme.md",
    "content": "## Example of conversion of a legacy my.jsonnet file\n\nAn example conversion of a legacy custom jsonnet file to release-0.8\nformat can be seen by viewing and comparing this\n[release-0.3 jsonnet file](my.release-0.3.jsonnet) (when the github\nrepo was under `https://github.com/coreos/kube-prometheus...`)\nand the corresponding [release-0.8 jsonnet file](my.release-0.8.jsonnet).\n\nThese two files have had necessary blank lines added so that they\ncan be compared side-by-side and line-by-line on screen.\n\nThe conversion covers both the change of stopping using ksonnet after\nrelease-0.3 and also the major migration after release-0.7 as described in\n[migration-guide.md](../migration-guide.md)\n\nThe sample files are intended as an example of format conversion and\nnot necessarily best practice for the files in release-0.3 or release-0.8.\n\nBelow are three sample extracts of the conversion as an indication of the\nchanges required.\n\n<table>\n<tr>\n<th> release-0.3 </th>\n<th> release-0.8 </th>\n</tr>\n<tr>\n<td>\n\n```jsonnet\nlocal kp =\n  (import 'kube-prometheus/kube-prometheus.libsonnet') +\n  (import 'kube-prometheus/kube-prometheus-kubeadm.libsonnet') +\n  (import 'kube-prometheus/kube-prometheus-static-etcd.libsonnet') +\n\n  {\n    _config+:: {\n      // Override namespace\n      namespace: 'monitoring',\n  \n  \n  \n  \n   \n   \n   \n```\n\n</td>\n<td>\n\n```jsonnet\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // kubeadm now achieved by setting platform value - see 9 lines below\n  (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  (import 'kube-prometheus/addons/podsecuritypolicies.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n\n      // Add kubeadm platform-specific items,\n      // including kube-contoller-manager and kube-scheduler discovery\n      kubePrometheus+: {\n        platform: 'kubeadm',\n      },\n```\n\n</td>\n</tr>\n</table>\n<table>\n<tr>\n<th> release-0.3 </th>\n<th> release-0.8 </th>\n</tr>\n<tr>\n<td>\n\n```jsonnet\n    // Add additional ingresses\n    // See https://github.com/coreos/kube-prometheus/...\n    //           tree/master/examples/ingress.jsonnet\n    ingress+:: {\n      alertmanager:\n        ingress.new() +\n\n\n        ingress.mixin.metadata.withName('alertmanager') +\n        ingress.mixin.metadata.withNamespace($._config.namespace) +\n        ingress.mixin.metadata.withAnnotations({\n          'kubernetes.io/ingress.class': 'nginx-api',\n        }) +\n\n        ingress.mixin.spec.withRules(\n          ingressRule.new() +\n          ingressRule.withHost(alert_manager_host) +\n          ingressRule.mixin.http.withPaths(\n            ingressRuleHttpPath.new() +\n\n\n\n\n            ingressRuleHttpPath.mixin.backend\n                               .withServiceName('alertmanager-operated') +\n            ingressRuleHttpPath.mixin.backend.withServicePort(9093)\n          ),\n        ) +\n        // Note we do not need a TLS secretName here as we are going to use the\n        // nginx-ingress default secret which is a wildcard\n        // secretName would need to be in the same namespace at this time,\n        // see https://github.com/kubernetes/ingress-nginx/issues/2371\n        ingress.mixin.spec.withTls(\n          ingressTls.new() +\n          ingressTls.withHosts(alert_manager_host)\n        ),\n  \n  \n```\n\n</td>\n<td>\n\n```jsonnet\n    // Add additional ingresses\n    // See https://github.com/prometheus-operator/kube-prometheus/...\n    //           blob/main/examples/ingress.jsonnet\n    ingress+:: {\n      alertmanager: {\n        apiVersion: 'networking.k8s.io/v1',\n        kind: 'Ingress',\n        metadata: {\n          name: 'alertmanager',\n          namespace: $.values.common.namespace,\n          annotations: {\n            'kubernetes.io/ingress.class': 'nginx-api',\n          },\n        },\n        spec: {\n          rules: [{\n            host: alert_manager_host,\n            http: {\n              paths: [{\n                path: '/',\n                pathType: 'Prefix',\n                backend: {\n                  service: {\n                    name: 'alertmanager-operated',\n                    port: {\n                      number: 9093,\n                    },\n                  },\n                },\n              }],\n            },\n          }],\n          tls: [{\n\n            hosts: [alert_manager_host],\n          }],\n        },\n      },\n```\n\n</td>\n</tr>\n</table>\n<table>\n<tr>\n<th> release-0.3 </th>\n<th> release-0.8 </th>\n</tr>\n<tr>\n<td>\n\n```jsonnet\n    // Additional prometheus rules\n    // See https://github.com/coreos/kube-prometheus/docs/...\n    //           developing-prometheus-rules-and-grafana-dashboards.md\n    //\n    // cat my-prometheus-rules.yaml | \\\n    //   gojsontoyaml -yamltojson | \\\n    //   jq . > my-prometheus-rules.json\n    prometheusRules+:: {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n      groups+: import 'my-prometheus-rules.json',\n\n\n    },\n  };\n  \n  \n  \n  \n```\n\n</td>\n<td>\n\n```jsonnet\n    // Additional prometheus rules\n    // See https://github.com/prometheus-operator/kube-prometheus/blob/main/...\n    //           docs/developing-prometheus-rules-and-grafana-dashboards.md...\n    //           #pre-rendered-rules\n    // cat my-prometheus-rules.yaml | \\\n    //   gojsontoyaml -yamltojson | \\\n    //   jq . > my-prometheus-rules.json\n    prometheusMe: {\n      rules: {\n        apiVersion: 'monitoring.coreos.com/v1',\n        kind: 'PrometheusRule',\n        metadata: {\n          name: 'my-prometheus-rule',\n          namespace: $.values.common.namespace,\n          labels: {\n            'app.kubernetes.io/name': 'kube-prometheus',\n            'app.kubernetes.io/part-of': 'kube-prometheus',\n            prometheus: 'k8s',\n            role: 'alert-rules',\n          },\n        },\n        spec: {\n          groups: import 'my-prometheus-rules.json',\n        },\n      },\n    },\n  };\n\n...\n\n+ { ['prometheus-my-' + name]: kp.prometheusMe[name] for name in std.objectFields(kp.prometheusMe) }\n```\n\n</td>\n</tr>\n</table>\n"
  },
  {
    "path": "docs/migration-guide.md",
    "content": "# Migration guide from release-0.7 and earlier\n\n## Why?\n\nThanks to our community we identified a lot of short-commings of previous design, varying from issues with global state to UX problems. Hoping to fix at least part of those issues we decided to do a complete refactor of the codebase.\n\n## Overview\n\n### Breaking Changes\n\n- global `_config` object is removed and the new `values` object is a partial replacement\n- `imageRepos` field was removed and the project no longer tries to compose image strings. Use `$.values.common.images` to override default images.\n- prometheus alerting and recording rules are split into multiple `PrometheusRule` objects\n- kubernetes control plane ServiceMonitors and Services are now part of the new `kubernetesControlPlane` top-level object instead of `prometheus` object\n- `jsonnet/kube-prometheus/kube-prometheus.libsonnet` file was renamed to `jsonnet/kube-prometheus/main.libsonnet` and slimmed down to bare minimum\n- `jsonnet/kube-prometheus/kube-prometheus*-.libsonnet` files were move either to `jsonnet/kube-prometheus/addons/` or `jsonnet/kube-prometheus/platforms/` depending on the feature they provided\n- all component libraries are now function- and not object-based\n- monitoring-mixins are included inside each component and not globally. `prometheusRules`, `prometheusAlerts`, and `grafanaDashboards` are accessible only per component via `mixin` object (ex. `$.alertmanager.mixin.prometheusAlerts`)\n- default repository branch changed from `master` to `main`\n- labels on resources have changes, `kubectl apply` will not work correctly due to those field being immutable. Deleting the resource first before applying is a workaround if you are using the kubectl CLI. (This only applies to `Deployments` and `DaemonSets`.)\n\n### New Features\n\n- concept of `addons`, `components`, and `platforms` was introduced\n- all main `components` are now represented internally by a function with default values and required parameters (see #Component-configuration for more information)\n- `$.values` holds main configuration parameters and should be used to set basic stack configuration.\n- common parameters across all `components` are stored now in `$.values.common`\n- removed dependency on deprecated ksonnet library\n\n## Details\n\n### Components, Addons, Platforms\n\nThose concepts were already present in the repository but it wasn't clear which file is holding what. After refactoring we categorized jsonnet code into 3 buckets and put them into separate directories:\n- `components` - main building blocks for kube-prometheus, written as functions responsible for creating multiple objects representing kubernetes manifests. For example all objects for node_exporter deployment are bundled in `components/node_exporter.libsonnet` library\n- `addons` - everything that can enhance kube-prometheus deployment. Those are small snippets of code adding a small feature, for example adding anti-affinity to pods via [`addons/anti-affinity.libsonnet`](https://github.com/prometheus-operator/kube-prometheus/blob/main/jsonnet/kube-prometheus/addons/anti-affinity.libsonnet). Addons are meant to be used in object-oriented way like `local kp = (import 'kube-prometheus/main.libsonnet') + (import 'kube-prometheus/addons/all-namespaces.libsonnet')`\n- `platforms` - currently those are `addons` specialized to allow deploying kube-prometheus project on a specific platform.\n\n### Component configuration\n\nRefactoring main components to use functions allowed us to define APIs for said components. Each function has a default set of parameters that can be overridden or that are required to be set by a user. Those default parameters are represented in each component by `defaults` map at the top of each library file, for example in [`node_exporter.libsonnet`](https://github.com/prometheus-operator/kube-prometheus/blob/1d2a0e275af97948667777739a18b24464480dc8/jsonnet/kube-prometheus/components/node-exporter.libsonnet#L3-L34).\n\nThis API is meant to ease the use of kube-prometheus as parameters can be passed from a JSON file and don't need to be in jsonnet format. However, if you need to modify particular parts of the stack, jsonnet allows you to do this and we are also not restricting such access in any way. An example of such modifications can be seen in any of our `addons`, like the [`addons/anti-affinity.libsonnet`](https://github.com/prometheus-operator/kube-prometheus/blob/main/jsonnet/kube-prometheus/addons/anti-affinity.libsonnet) one.\n\n### Mixin integration\n\nPreviously kube-prometheus project joined all mixins on a global level. However with a wider adoption of monitoring mixins this turned out to be a problem, especially apparent when two mixins started to use the same configuration field for different purposes. To fix this we moved all mixins into their own respective components:\n- alertmanager mixin -> `alertmanager.libsonnet`\n- kubernetes mixin -> `k8s-control-plane.libsonnet`\n- kube-state-metrics mixin -> `kube-state-metrics.libsonnet`\n- node_exporter mixin -> `node_exporter.libsonnet`\n- prometheus and thanos sidecar mixins -> `prometheus.libsonnet`\n- prometheus-operator mixin -> `prometheus-operator.libsonnet`\n- kube-prometheus alerts and rules -> `components/mixin/custom.libsonnet`\n\n> etcd mixin is a special case as we add it inside an `addon` in `addons/static-etcd.libsonnet`\n\nThis results in creating multiple `PrometheusRule` objects instead of having one giant object as before. It also means each mixin is configured separately and accessing mixin objects is done via `$.<component>.mixin`.\n\n## Examples\n\nAll examples from `examples/` directory were adapted to the new codebase. [Please take a look at them for guideance](https://github.com/prometheus-operator/kube-prometheus/tree/main/examples)\n\n## Legacy migration\n\nAn example of conversion of a legacy release-0.3 my.jsonnet file to release-0.8 can be found in [migration-example](migration-example)\n\n## Advanced usage examples\n\nFor more advanced usage examples you can take a look at those two, open to public, implementations:\n- [thaum-xyz/ankhmorpork](https://github.com/thaum-xyz/ankhmorpork/blob/master/apps/monitoring/jsonnet) - extending kube-prometheus to adapt to a required environment\n- [openshift/cluster-monitoring-operator](https://github.com/openshift/cluster-monitoring-operator/pull/1044) - using kube-prometheus components as standalone libraries to build a custom solution\n\n## Final note\n\nRefactoring was a huge undertaking and possibly this document didn't describe in enough detail how to help you with migration to the new stack. If that is the case, please reach out to us by using [GitHub discussions](https://github.com/prometheus-operator/kube-prometheus/discussions) feature or directly on [#prometheus-operator kubernetes slack channel](http://slack.k8s.io/).\n"
  },
  {
    "path": "docs/monitoring-external-etcd.md",
    "content": "---\nweight: 305\ntoc: true\ntitle: Monitoring external etcd\nmenu:\n    docs:\n        parent: kube\nlead: This guide will help you monitoring an external etcd cluster.\nimages: []\ndraft: false\ndescription: This guide will help you monitoring an external etcd cluster.\n---\n\nWhen the etcd cluster is not hosted inside Kubernetes.\nThis is often the case with Kubernetes setups. This approach has been tested with kube-aws but the same principals apply to other tools.\n\nNote that [etcd.jsonnet](../examples/etcd.jsonnet) & [static-etcd.libsonnet](../jsonnet/kube-prometheus/addons/static-etcd.libsonnet) (which are described by a section of the [customization](customizations/static-etcd-configuration.md)) do the following:\n* Put the three etcd TLS client files (CA & cert & key) into a secret in the namespace, and have Prometheus Operator load the secret.\n* Create the following (to expose etcd metrics - port 2379): a Service, Endpoint, & ServiceMonitor.\n\n# Step 1: Open the port\n\nYou now need to allow the nodes Prometheus are running on to talk to the etcd on the port 2379 (if 2379 is the port used by etcd to expose the metrics)\n\nIf using kube-aws, you will need to edit the etcd security group inbound, specifying the security group of your Kubernetes node (worker) as the source.\n\n## kube-aws and EIP or ENI inconsistency\n\nWith kube-aws, each etcd node has two IP addresses:\n\n* EC2 instance IP\n* EIP or ENI (depending on the chosen method in yuour cluster.yaml)\n\nFor some reason, some etcd node answer to :2379/metrics on the intance IP (eth0), some others on the EIP|ENI address (eth1). See [issue](https://github.com/kubernetes-incubator/kube-aws/issues/923)\nIt would be of course much better if we could hit the EPI/ENI all the time as they don't change even if the underlying EC2 intance goes down.\nIf specifying the Instance IP (eth0) in the Prometheus Operator ServiceMonitor, and the EC2 intance goes down, one would have to update the ServiceMonitor.\n\nAnother idea woud be to use the DNS entries of etcd, but those are not currently supported for EndPoints objects in Kubernetes.\n\n# Step 2: verify\n\nGo to the Prometheus UI on :9090/config and check that you have an etcd job entry:\n\n```\n- job_name: monitoring/etcd-k8s/0\n  scrape_interval: 30s\n  scrape_timeout: 10s\n  ...\n```\n\nOn the :9090/targets page:\n* You should see \"etcd\" with the UP state. If not, check the Error column for more information.\n* If no \"etcd\" targets are even shown on this page, prometheus isn't attempting to scrape it.\n"
  },
  {
    "path": "docs/monitoring-other-namespaces.md",
    "content": "---\nweight: 306\ntoc: true\ntitle: Monitoring other Namespaces\nmenu:\n    docs:\n        parent: kube\nlead: This guide will help you monitoring applications in other namespaces.\nimages: []\ndraft: false\ndescription: This guide will help you monitoring applications in other namespaces.\n---\n\nBy default the RBAC rules are only enabled for the `Default` and `kube-system` namespaces.\n\n# Setup\n\nYou have to give the list of the namespaces that you want to be able to monitor.\nThis is done in the variable `prometheus.roleSpecificNamespaces`. You usually set this in your `.jsonnet` file when building the manifests.\n\nExample to create the needed `Role` and `RoleBinding` for the Namespace `foo` :\n\n```\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n\n      prometheus+:: {\n        namespaces: [\"default\", \"kube-system\", \"monitoring\", \"foo\"],\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n```\n"
  },
  {
    "path": "docs/security.md",
    "content": "## Security\n\nThe manifests generated in this repository are subject to a security audit in CI via [kubescape](https://github.com/armosec/kubescape).\nThe scan can be run locally via `make kubescape`.\n\nWhile we aim for best practices in terms of security by default, due to the nature of the project, we are required to make the exceptions in the following components:\n\n#### node-exporter\n* Host Port is set. [Kubernetes already sets a Host Port by default when Host Network is enabled.](https://github.com/kubernetes/kubernetes/blob/1945829906546caf867992669a0bfa588edf8be6/pkg/apis/core/v1/defaults.go#L402-L411). Since nothing can be done here, we configure it to our preference port.\n* Host PID is set to `true`, since node-exporter requires direct access to the host namespace to gather statistics.\n* Host Network is set to `true`, since node-exporter requires direct access to the host network to gather statistics.\n* `automountServiceAccountToken` is set to `true` on Pod level as kube-rbac-proxy sidecar requires connection to kubernetes API server.\n\n#### prometheus-adapter\n* `automountServiceAccountToken` is set to `true` on Pod level as application requires connection to kubernetes API server.\n\n#### blackbox-exporter\n* `automountServiceAccountToken` is set to `true` on Pod level as kube-rbac-proxy sidecar requires connection to kubernetes API server.\n\n#### kube-state-metrics\n* `automountServiceAccountToken` is set to `true` on Pod level as kube-rbac-proxy sidecars requires connection to kubernetes API server.\n\n#### prometheus-operator\n* `automountServiceAccountToken` is set to `true` on Pod level as kube-rbac-proxy sidecars requires connection to kubernetes API server.\n"
  },
  {
    "path": "docs/troubleshooting.md",
    "content": "# Troubleshooting\n\nSee the general [guidelines](community-support.md) for getting support from the community.\n\n## Error retrieving kubelet metrics\n\nShould the Prometheus `/targets` page show kubelet targets, but not able to successfully scrape the metrics, then most likely it is a problem with the authentication and authorization setup of the kubelets.\n\nAs described in the [README.md Prerequisites](../README.md#prerequisites) section, in order to retrieve metrics from the kubelet token authentication and authorization must be enabled. Some Kubernetes setup tools do not enable this by default.\n\n- If you are using Google's GKE product, see [cAdvisor support](GKE-cadvisor-support.md).\n- If you are using AWS EKS, see [AWS EKS CNI support](EKS-cni-support.md).\n- If you are using Weave Net, see [Weave Net support](weave-net-support.md).\n\n### Authentication problem\n\nThe Prometheus `/targets` page will show the kubelet job with the error `403 Unauthorized`, when token authentication is not enabled. Ensure, that the `--authentication-token-webhook=true` flag is enabled on all kubelet configurations.\n\n### Authorization problem\n\nThe Prometheus `/targets` page will show the kubelet job with the error `401 Unauthorized`, when token authorization is not enabled. Ensure that the `--authorization-mode=Webhook` flag is enabled on all kubelet configurations.\n\n## kube-state-metrics resource usage\n\nIn some environments, kube-state-metrics may need additional\nresources. One driver for more resource needs, is a high number of\nnamespaces. There may be others.\n\nkube-state-metrics resource allocation is managed by\n[addon-resizer](https://github.com/kubernetes/autoscaler/tree/master/addon-resizer/nanny)\nYou can control it's parameters by setting variables in the\nconfig. They default to:\n\n```jsonnet\n    kubeStateMetrics+:: {\n      baseCPU: '100m',\n      cpuPerNode: '2m',\n      baseMemory: '150Mi',\n      memoryPerNode: '30Mi',\n    }\n```\n\n## Error retrieving kube-proxy metrics\n\nBy default, kubeadm will configure kube-proxy to listen on 127.0.0.1 for metrics. Because of this prometheus would not be able to scrape these metrics. This would have to be changed to 0.0.0.0 in one of the following two places:\n\n1. Before cluster initialization, the config file passed to kubeadm init should have KubeProxyConfiguration manifest with the field metricsBindAddress set to 0.0.0.0:10249\n2. If the k8s cluster is already up and running, we'll have to modify the configmap kube-proxy in the namespace kube-system and set the metricsBindAddress field. After this kube-proxy daemonset would have to be restarted with\n   `kubectl -n kube-system rollout restart daemonset kube-proxy`\n"
  },
  {
    "path": "docs/update.md",
    "content": "# Update kube-prometheus\n\nYou may wish to fetch changes made on this project so they are available to you.\n\n## Update jb\n\n`jb` may have been updated so it's a good idea to get the latest version of this binary:\n\n```shell\n$ go install -a github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest\n```\n\n## Update kube-prometheus\n\nThe command below will sync with upstream project:\n\n```shell\n$ jb update\n```\n\n## Compile the manifests and apply\n\nOnce updated, just follow the instructions under [Generating](customizing.md#generating) and [Apply the kube-prometheus stack](customizing.md#apply-the-kube-prometheus-stack) from [customizing.md doc](customizing.md) to apply the changes to your cluster.\n\n## Migration from previous versions\n\nIf you are migrating from `release-0.7` branch or earlier please read [what changed and how to migrate in our guide](https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/migration-guide.md).\n\nRefer to [migration document](migration-example) for more information about migration from 0.3 and 0.8 versions of kube-prometheus.\n"
  },
  {
    "path": "docs/weave-net-support.md",
    "content": "# Setup Weave Net monitoring using kube-prometheus\n\n[Weave Net](https://kubernetes.io/docs/concepts/cluster-administration/networking/#weave-net-from-weaveworks) is a resilient and simple to use CNI provider for Kubernetes. A well monitored and observed CNI provider helps in troubleshooting Kubernetes networking problems. [Weave Net](https://www.weave.works/docs/net/latest/concepts/how-it-works/) emits [prometheus metrics](https://www.weave.works/docs/net/latest/tasks/manage/metrics/) for monitoring Weave Net. There are many ways to install Weave Net in your cluster. One of them is using [kops](https://github.com/kubernetes/kops/blob/master/docs/networking.md).\n\nFollowing this document, you can setup Weave Net monitoring for your cluster using kube-prometheus.\n\n## Contents\n\nUsing kube-prometheus and kubectl you will be able install the following for monitoring Weave Net in your cluster:\n\n1. [Service for Weave Net](https://gist.github.com/alok87/379c6234b582f555c141f6fddea9fbce) The service which the ServiceMonitor scrapes.\n2. [ServiceMonitor for Weave Net](https://gist.github.com/alok87/e46a7f9a79ef6d1da6964a035be2cfb9) Service monitor to scrape the Weave Net metrics and bring it to Prometheus.\n3. [Prometheus Alerts for Weave Net](https://stackoverflow.com/a/60447864) This will setup all the important Weave Net metrics you should be alerted on.\n4. [Grafana Dashboard for Weave Net](https://grafana.com/grafana/dashboards/11789) This will setup the per Weave Net pod level monitoring for Weave Net.\n5. [Grafana Dashboard for Weave Net(Cluster)](https://grafana.com/grafana/dashboards/11804) This will setup the cluster level monitoring for Weave Net.\n\n## Instructions\n- You can monitor Weave Net using an example like below. **Please note that some alert configurations are environment specific and may require modifications of alert thresholds**. For example: The FastDP flows have never gone below 15000 for us. But if this value is say 20000 for you then you can use an example like below to update the alert. The alerts which may require threshold modifications are `WeaveNetFastDPFlowsLow` and `WeaveNetIPAMUnreachable`.\n\n```jsonnet mdox-exec=\"cat examples/weave-net-example.jsonnet\"\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/weave-net/weave-net.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  kubernetesControlPlane+: {\n    prometheusRuleWeaveNet+: {\n      spec+: {\n        groups: std.map(\n          function(group)\n            if group.name == 'weave-net' then\n              group {\n                rules: std.map(\n                  function(rule)\n                    if rule.alert == 'WeaveNetFastDPFlowsLow' then\n                      rule {\n                        expr: 'sum(weave_flows) < 20000',\n                      }\n                    else if rule.alert == 'WeaveNetIPAMUnreachable' then\n                      rule {\n                        expr: 'weave_ipam_unreachable_percentage > 25',\n                      }\n                    else\n                      rule\n                  ,\n                  group.rules\n                ),\n              }\n            else\n              group,\n          super.groups\n        ),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n```\n\n- After you have the required yamls file please run\n\n```\nkubectl create -f prometheus-serviceWeaveNet.yaml\nkubectl create -f prometheus-serviceMonitorWeaveNet.yaml\nkubectl apply -f  prometheus-rules.yaml\nkubectl apply -f grafana-dashboardDefinitions.yaml\nkubectl apply -f grafana-deployment.yaml\n```\n"
  },
  {
    "path": "docs/windows.md",
    "content": "# Windows\n\nThe [Windows hostprocess addon](../examples/windows-hostprocess.jsonnet) adds the dashboards and rules from [kubernetes-monitoring/kubernetes-mixin](https://github.com/kubernetes-monitoring/kubernetes-mixin#dashboards-for-windows-nodes).\n\nIt also deploys [windows_exporter](https://github.com/prometheus-community/windows_exporter) as a [hostprocess pod](https://github.com/prometheus-community/windows_exporter/blob/master/kubernetes/kubernetes.md) as Kubernetes now supports HostProcess containers on Windows nodes (as of [v1.22](https://kubernetes.io/blog/2021/08/16/windows-hostprocess-containers/)). The cluster should be using containerd runtime.\n\n```\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n  (import 'kube-prometheus/addons/windows-hostprocess.libsonnet') +\n  {\n    values+:: {\n      windowsExporter+:: {\n        image: \"ghcr.io/prometheus-community/windows-exporter\",\n        version: \"0.21.0\",\n      },\n    },\n  };\n\n{ ['windows-exporter-' + name]: kp.windowsExporter[name] for name in std.objectFields(kp.windowsExporter) }\n```\n\nSee the [full example](../examples/windows-hostprocess.jsonnet) for setup.\n\nIf the cluster is running docker runtime then use the other [Windows addon](../examples/windows.jsonnet). The Windows addon does not deploy windows_exporter. Docker based Windows does not support running with [windows_exporter](https://github.com/prometheus-community/windows_exporter) in a pod so this add on uses [additional scrape configuration](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/additional-scrape-config.md) to set up a static config to scrape the node ports where windows_exporter is configured.\n\nThe addon requires you to specify the node ips and ports where it can find the windows_exporter. See the [full example](../examples/windows.jsonnet) for setup.\n\n```\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n  (import 'kube-prometheus/addons/windows.libsonnet') +\n  {\n    values+:: {\n      windowsScrapeConfig+:: {\n          static_configs: {\n              targets: [\"10.240.0.65:5000\", \"10.240.0.63:5000\"],\n          },\n      },\n    },\n  };\n```\n"
  },
  {
    "path": "example.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // Uncomment the following imports to enable its patches\n  // (import 'kube-prometheus/addons/anti-affinity.libsonnet') +\n  // (import 'kube-prometheus/addons/managed-cluster.libsonnet') +\n  // (import 'kube-prometheus/addons/node-ports.libsonnet') +\n  // (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  // (import 'kube-prometheus/addons/custom-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/external-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/pyrra.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/additional-namespaces-servicemonitor.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n    prometheus+:: {\n      namespaces+: ['my-namespace', 'my-second-namespace'],\n    },\n  },\n  exampleApplication: {\n    serviceMonitorMyNamespace: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'ServiceMonitor',\n      metadata: {\n        name: 'my-servicemonitor',\n        namespace: 'my-namespace',\n      },\n      spec: {\n        jobLabel: 'app',\n        endpoints: [\n          {\n            port: 'http-metrics',\n          },\n        ],\n        selector: {\n          matchLabels: {\n            'app.kubernetes.io/name': 'myapp',\n          },\n        },\n      },\n    },\n  },\n\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n"
  },
  {
    "path": "examples/additional-namespaces.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n\n    prometheus+: {\n      namespaces+: ['my-namespace', 'my-second-namespace'],\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/alertmanager-alert-template.tmpl",
    "content": "# to know more about custom template language read alertmanager documentation\n# inspired by : https://gist.github.com/milesbxf/e2744fc90e9c41b47aa47925f8ff6512\n\n{{ define \"slack.title\" -}}\n    [{{ .Status | toUpper -}}\n    {{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{- end -}}\n    ] {{ template \"__alert_severity_prefix_title\" . }} {{ .CommonLabels.alertname }}\n{{- end }}\n\n{{ define \"slack.color\" -}}\n    {{ if eq .Status \"firing\" -}}\n        {{ if eq .CommonLabels.severity \"warning\" -}}\n            warning\n        {{- else if eq .CommonLabels.severity \"critical\" -}}\n            danger\n        {{- else -}}\n            #439FE0\n        {{- end -}}\n    {{ else -}}\n    good\n    {{- end }}\n{{- end }}\n\n{{ define \"slack.icon_emoji\" }}:prometheus:{{ end }}\n\n{{/* The test to display in the alert */}}\n  {{ define \"slack.text\" -}}\n    {{ range .Alerts }}\n        {{- if .Annotations.message }}\n            {{ .Annotations.message }}\n        {{- end }}\n        {{- if .Annotations.description }}\n            {{ .Annotations.description }}\n        {{- end }}\n    {{- end }}\n{{- end }}\n\n"
  },
  {
    "path": "examples/alertmanager-config-external.jsonnet",
    "content": "((import 'kube-prometheus/main.libsonnet') + {\n   values+:: {\n     alertmanager+: {\n       config: importstr 'alertmanager-config.yaml',\n     },\n   },\n }).alertmanager.secret\n"
  },
  {
    "path": "examples/alertmanager-config-template-external.jsonnet",
    "content": "local configmap(name, namespace, data) = {\n  apiVersion: 'v1',\n  kind: 'ConfigMap',\n  metadata: {\n    name: name,\n    namespace: namespace,\n  },\n  data: data,\n};\n\nlocal kp =\n  // different libsonnet imported\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      alertmanager+: {\n        config: importstr 'alertmanager-config.yaml',\n      },\n    },\n    alertmanager+:: {\n      alertmanager+: {\n        spec+: {\n          // the important field configmaps:\n          configMaps: ['alert-templates'],  // goes to etc/alermanager/configmaps\n        },\n      },\n    },\n    configmap+:: {\n      'alert-templates': configmap(\n        'alert-templates',\n        $.values.common.namespace,  // could be $._config.namespace to assign namespace once\n        { 'alertmanager-alert-template.tmpl': importstr 'alertmanager-alert-template.tmpl' },\n      ),\n    },\n  };\n{ [name + '-configmap']: kp.configmap[name] for name in std.objectFields(kp.configmap) }\n"
  },
  {
    "path": "examples/alertmanager-config-with-template.yaml",
    "content": "# external alertmanager yaml\nglobal:\n  resolve_timeout: 10m\n  slack_api_url: url\nroute:\n  group_by: ['job']\n  group_wait: 30s\n  group_interval: 5m\n  repeat_interval: 12h\n  receiver: 'null'\n  routes:\n  - match:\n      alertname: Watchdog\n    receiver: 'null'\nreceivers:\n- name: 'null'\n- name: slack\nslack_configs:\n- channel: '#alertmanager-testing'\n  send_resolved: true\n   title: '{{ template \"slack.title\" . }}'\n    icon_emoji: '{{ template \"slack.icon_emoji\" . }}'\n    color: '{{ template \"slack.color\" . }}'\n    text: '{{ template \"slack.text\" . }}\n\ntemplates:\n- '/etc/alertmanager/configmaps/alert-templates/*.tmpl'\n"
  },
  {
    "path": "examples/alertmanager-config.jsonnet",
    "content": "((import 'kube-prometheus/main.libsonnet') + {\n   values+:: {\n     alertmanager+: {\n       config: |||\n         global:\n           resolve_timeout: 10m\n         route:\n           group_by: ['job']\n           group_wait: 30s\n           group_interval: 5m\n           repeat_interval: 12h\n           receiver: 'null'\n           routes:\n           - match:\n               alertname: Watchdog\n             receiver: 'null'\n         receivers:\n         - name: 'null'\n       |||,\n     },\n   },\n }).alertmanager.secret\n"
  },
  {
    "path": "examples/alertmanager-config.yaml",
    "content": "# external alertmanager yaml\nglobal:\n  resolve_timeout: 10m\n  slack_api_url: url\nroute:\n  group_by: ['job']\n  group_wait: 30s\n  group_interval: 5m\n  repeat_interval: 12h\n  receiver: 'null'\n  routes:\n  - match:\n      alertname: Watchdog\n    receiver: 'null'\nreceivers:\n- name: 'null'\n- name: slack\nslack_configs:\n- channel: '#alertmanager-testing'\n  send_resolved: true\n  title: '[{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'\n  text: |-\n    {{ range .Alerts }}\n      *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}`\n      *Description:* {{ .Annotations.description }}\n      *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:>\n      *Details:*\n      {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n      {{ end }}\n    {{ end }}\n"
  },
  {
    "path": "examples/all-namespaces.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/all-namespaces.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n    prometheus+: {\n      namespaces: [],\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/anti-affinity.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/anti-affinity.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/auth",
    "content": "# This file should not ever be used, it's just a mock.\ndontusethis:$apr1$heg6VIp7$1PSzJ/Z6fYboQ5pYrbgSy.\n"
  },
  {
    "path": "examples/basic-auth/secrets.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: basic-auth\ndata:\n  password: dG9vcg== # toor\n  user: YWRtaW4= # admin\ntype: Opaque"
  },
  {
    "path": "examples/basic-auth/service-monitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    k8s-apps: basic-auth-example\n  name: basic-auth-example\nspec:\n  endpoints:\n  - basicAuth:\n      password:\n        name: basic-auth\n        key: password\n      username:\n        name: basic-auth\n        key: user\n    port: metrics\n  namespaceSelector:\n    matchNames:\n    - logging\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: myapp"
  },
  {
    "path": "examples/changing-default-rules.libsonnet",
    "content": "local filter = {\n  kubernetesControlPlane+: {\n    prometheusRule+: {\n      spec+: {\n        groups: std.map(\n          function(group)\n            if group.name == 'kubernetes-apps' then\n              group {\n                rules: std.filter(\n                  function(rule)\n                    rule.alert != 'KubeStatefulSetReplicasMismatch',\n                  group.rules\n                ),\n              }\n            else\n              group,\n          super.groups\n        ),\n      },\n    },\n  },\n};\nlocal update = {\n  kubernetesControlPlane+: {\n    prometheusRule+: {\n      spec+: {\n        groups: std.map(\n          function(group)\n            if group.name == 'kubernetes-apps' then\n              group {\n                rules: std.map(\n                  function(rule)\n                    if rule.alert == 'KubePodCrashLooping' then\n                      rule {\n                        expr: 'rate(kube_pod_container_status_restarts_total{namespace=kube-system,job=\"kube-state-metrics\"}[10m]) * 60 * 5 > 0',\n                      }\n                    else\n                      rule,\n                  group.rules\n                ),\n              }\n            else\n              group,\n          super.groups\n        ),\n      },\n    },\n  },\n};\n\nlocal add = {\n  exampleApplication:: {\n    prometheusRule+: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'example-application-rules',\n        namespace: $.values.common.namespace,\n      },\n      spec: (import 'existingrule.json'),\n    },\n  },\n};\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           filter +\n           update +\n           add + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n};\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) } +\n{ ['exampleApplication-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n"
  },
  {
    "path": "examples/continuous-delivery/argocd/README.md",
    "content": "## ArgoCD Example\n\nThis is the simplest, working example of an argocd app, the JSON object built is now an array of objects as that is the prefered format for ArgoCD. And ArgoCD specific annotations are added to manifests.\n\nRequirements:\n\n- **ArgoCD 1.7+**\n\n- Follow the vendor generation steps at the root of this repository and generate a `vendored` folder (referenced in `application.yaml`).\n\n- Make sure that argocd-cm has `application.instanceLabelKey` set to something else than `app.kubernetes.io/instance`, otherwise it will cause problems with prometheus target discovery. (see also [Why Is My App Out Of Sync Even After Syncing?](https://argo-cd.readthedocs.io/en/stable/faq/#why-is-my-app-out-of-sync-even-after-syncing))\n"
  },
  {
    "path": "examples/continuous-delivery/argocd/application.yaml",
    "content": "---\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: kube-prometheus\n  namespace: argocd\n  annotations:\n    recipients.argocd-notifications.argoproj.io: \"slack:jenkins\"\nspec:\n  destination:\n    namespace: monitoring\n    server: https://kubernetes.default.svc\n  project: monitoring\n  source:\n    directory:\n      jsonnet:\n        libs:\n          - vendored\n      recurse: true\n    path: examples/continuous-delivery/argocd/kube-prometheus\n    repoURL: git@github.com:prometheus-operator/kube-prometheus.git\n    targetRevision: HEAD\n  syncPolicy:\n    automated: {}\n---\n"
  },
  {
    "path": "examples/continuous-delivery/argocd/appproject.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: AppProject\nmetadata:\n  annotations:\n    recipients.argocd-notifications.argoproj.io: slack:alerts\n  generation: 1\n  name: monitoring\n  namespace: argocd\nspec:\n  clusterResourceWhitelist:\n    - group: \"*\"\n      kind: \"*\"\n  description: \"Monitoring Stack deployment\"\n  destinations:\n    - namespace: kube-system\n      server: https://kubernetes.default.svc\n    - namespace: default\n      server: https://kubernetes.default.svc\n    - namespace: monitoring\n      server: https://kubernetes.default.svc\n  sourceRepos:\n    - git@github.com:prometheus-operator/kube-prometheus.git\n"
  },
  {
    "path": "examples/continuous-delivery/argocd/kube-prometheus/argocd-basic.jsonnet",
    "content": "// NB! Make sure that argocd-cm has `application.instanceLabelKey` set to something else than `app.kubernetes.io/instance`,\n//     otherwise it will cause problems with prometheus target discovery.\n//     See also https://argo-cd.readthedocs.io/en/stable/faq/#why-is-my-app-out-of-sync-even-after-syncing\n\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // Uncomment the following imports to enable its patches\n  // (import 'kube-prometheus/addons/anti-affinity.libsonnet') +\n  // (import 'kube-prometheus/addons/managed-cluster.libsonnet') +\n  // (import 'kube-prometheus/addons/node-ports.libsonnet') +\n  // (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  // (import 'kube-prometheus/addons/custom-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/external-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/pyrra.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n  };\n\n// Unlike in kube-prometheus/example.jsonnet where a map of file-names to manifests is returned,\n// for ArgoCD we need to return just a regular list with all the manifests.\nlocal manifests =\n  [kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus)] +\n  [kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator)] +\n  [kp.alertmanager[name] for name in std.objectFields(kp.alertmanager)] +\n  [kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter)] +\n  [kp.grafana[name] for name in std.objectFields(kp.grafana)] +\n  // [ kp.pyrra[name] for name in std.objectFields(kp.pyrra)] +\n  [kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics)] +\n  [kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane)] +\n  [kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter)] +\n  [kp.prometheus[name] for name in std.objectFields(kp.prometheus)] +\n  [kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter)];\n\nlocal argoAnnotations(manifest) =\n  manifest {\n    metadata+: {\n      annotations+: {\n        'argocd.argoproj.io/sync-wave':\n          // Make sure to sync the Namespace & CRDs before anything else (to avoid sync failures)\n          if std.member(['CustomResourceDefinition', 'Namespace'], manifest.kind)\n          then '-5'\n          // And sync all the roles outside of the main & kube-system last (in case some of the namespaces don't exist yet)\n          else if std.objectHas(manifest, 'metadata')\n                  && std.objectHas(manifest.metadata, 'namespace')\n                  && !std.member([kp.values.common.namespace, 'kube-system'], manifest.metadata.namespace)\n          then '10'\n          else '5',\n        'argocd.argoproj.io/sync-options':\n          // Use replace strategy for CRDs, as they're too big fit into the last-applied-configuration annotation that kubectl apply wants to use\n          if manifest.kind == 'CustomResourceDefinition' then 'Replace=true'\n          else '',\n      },\n    },\n  };\n\n// Add argo-cd annotations to all the manifests\n[\n  if std.endsWith(manifest.kind, 'List') && std.objectHas(manifest, 'items')\n  then manifest { items: [argoAnnotations(item) for item in manifest.items] }\n  else argoAnnotations(manifest)\n  for manifest in manifests\n]\n"
  },
  {
    "path": "examples/drop-dashboards.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      grafana+: {\n        dashboards: std.mergePatch(super.dashboards, {\n          // Add more unwanted dashboards here\n          'alertmanager-overview.json': null,\n        }),\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/eks-cni-example.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n    kubePrometheus+: {\n      platform: 'eks',\n    },\n  },\n  kubernetesControlPlane+: {\n    prometheusRuleEksCNI+: {\n      spec+: {\n        groups+: [\n          {\n            name: 'example-group',\n            rules: [\n              {\n                record: 'aws_eks_available_ip',\n                expr: 'sum by(instance) (awscni_total_ip_addresses) - sum by(instance) (awscni_assigned_ip_addresses) < 10',\n              },\n            ],\n          },\n        ],\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/etcd-client-ca.crt",
    "content": ""
  },
  {
    "path": "examples/etcd-client.crt",
    "content": ""
  },
  {
    "path": "examples/etcd-client.key",
    "content": ""
  },
  {
    "path": "examples/etcd-skip-verify.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/static-etcd.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n    etcd+:: {\n      ips: ['127.0.0.1'],\n      clientCA: importstr 'etcd-client-ca.crt',\n      clientKey: importstr 'etcd-client.key',\n      clientCert: importstr 'etcd-client.crt',\n      insecureSkipVerify: true,\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/etcd.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/static-etcd.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n\n    etcd+: {\n      // Configure this to be the IP(s) to scrape - i.e. your etcd node(s) (use commas to separate multiple values).\n      ips: ['127.0.0.1'],\n\n      // Reference info:\n      //  * https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec (has endpoints)\n      //  * https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint (has tlsConfig)\n      //  * https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#tlsconfig (has: caFile, certFile, keyFile, serverName, & insecureSkipVerify)\n\n      // Set these three variables to the fully qualified directory path on your work machine to the certificate files that are valid to scrape etcd metrics with (check the apiserver container).\n      // Most likely these certificates are generated somewhere in an infrastructure repository, so using the jsonnet `importstr` function can\n      // be useful here. (Kube-aws stores these three files inside the credential folder.)\n      // All the sensitive information on the certificates will end up in a Kubernetes Secret.\n      clientCA: importstr 'etcd-client-ca.crt',\n      clientKey: importstr 'etcd-client.key',\n      clientCert: importstr 'etcd-client.crt',\n\n      // Note that you should specify a value EITHER for 'serverName' OR for 'insecureSkipVerify'. (Don't specify a value for both of them, and don't specify a value for neither of them.)\n      // * Specifying serverName: Ideally you should provide a valid value for serverName (and then insecureSkipVerify should be left as false - so that serverName gets used).\n      // * Specifying insecureSkipVerify: insecureSkipVerify is only to be used (i.e. set to true) if you cannot (based on how your etcd certificates were created) use a Subject Alternative Name.\n      // * If you specify a value:\n      //     ** for both of these variables: When 'insecureSkipVerify: true' is specified, then also specifying a value for serverName won't hurt anything but it will be ignored.\n      //     ** for neither of these variables: then you'll get authentication errors on the prom '/targets' page with your etcd targets.\n\n      // A valid name (DNS or Subject Alternative Name) that the client (i.e. prometheus) will use to verify the etcd TLS certificate.\n      //  * Note that doing `nslookup etcd.kube-system.svc.cluster.local` (on a pod in a K8s cluster where kube-prometheus has been installed) shows that kube-prometheus sets up this hostname.\n      //  * `openssl x509 -noout -text -in etcd-client.pem` will print the Subject Alternative Names.\n      serverName: 'etcd.kube-system.svc.cluster.local',\n\n      // When insecureSkipVerify isn't specified, the default value is \"false\".\n      //insecureSkipVerify: true,\n\n      // In case you have generated the etcd certificate with kube-aws:\n      //  * If you only have one etcd node, you can use the value from 'etcd.internalDomainName' (specified in your kube-aws cluster.yaml) as the value for 'serverName'.\n      //  * But if you have multiple etcd nodes, you will need to use 'insecureSkipVerify: true' (if using default certificate generators method), as the valid certificate domain\n      //    will be different for each etcd node. (kube-aws default certificates are not valid against the IP - they were created for the DNS.)\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/example-app/example-app.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: example-app\n  labels:\n    tier: frontend\n  namespace: default\nspec:\n  selector:\n    app.kubernetes.io/name: example-app\n  ports:\n  - name: web\n    protocol: TCP\n    port: 8080\n    targetPort: web\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: example-app\n  namespace: default\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: example-app\n      version: 1.1.3\n  replicas: 4\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: example-app\n        version: 1.1.3\n    spec:\n      containers:\n      - name: example-app\n        image: quay.io/fabxc/prometheus_demo_service\n        ports:\n        - name: web\n          containerPort: 8080\n          protocol: TCP\n"
  },
  {
    "path": "examples/example-app/prometheus-frontend-alertmanager-discovery-role-binding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: prometheus-frontend\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: alertmanager-discovery\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-frontend\n  namespace: default\n"
  },
  {
    "path": "examples/example-app/prometheus-frontend-alertmanager-discovery-role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: alertmanager-discovery\n  namespace: monitoring\nrules:\n- apiGroups: [\"\"]\n  resources:\n  - services\n  - endpoints\n  - pods\n  verbs: [\"list\", \"watch\"]\n"
  },
  {
    "path": "examples/example-app/prometheus-frontend-role-binding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: prometheus-frontend\n  namespace: default\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: prometheus-frontend\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-frontend\n  namespace: default\n"
  },
  {
    "path": "examples/example-app/prometheus-frontend-role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: prometheus-frontend\n  namespace: default\nrules:\n- apiGroups: [\"\"]\n  resources:\n  - nodes\n  - services\n  - endpoints\n  - pods\n  verbs: [\"get\", \"list\", \"watch\"]\n- apiGroups: [\"\"]\n  resources:\n  - configmaps\n  verbs: [\"get\"]\n"
  },
  {
    "path": "examples/example-app/prometheus-frontend-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: prometheus-frontend\n  namespace: default\n"
  },
  {
    "path": "examples/example-app/prometheus-frontend-svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: prometheus-frontend\n  namespace: default\nspec:\n  type: NodePort\n  ports:\n  - name: web\n    nodePort: 30100\n    port: 9090\n    protocol: TCP\n    targetPort: web\n  selector:\n    prometheus: frontend\n"
  },
  {
    "path": "examples/example-app/prometheus-frontend.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n  name: frontend\n  namespace: default\n  labels:\n    prometheus: frontend\nspec:\n  serviceAccountName: prometheus-frontend\n  version: v1.7.1\n  serviceMonitorSelector:\n    matchLabels:\n      tier: frontend\n  resources:\n    requests:\n      # 2Gi is default, but won't schedule if you don't have a node with >2Gi\n      # memory. Modify based on your target and time-series count for\n      # production use. This value is mainly meant for demonstration/testing\n      # purposes.\n      memory: 400Mi\n  alerting:\n    alertmanagers:\n    - namespace: monitoring\n      name: alertmanager-main\n      port: web\n"
  },
  {
    "path": "examples/example-app/servicemonitor-frontend.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: frontend\n  namespace: default\n  labels:\n    tier: frontend\nspec:\n  selector:\n    matchLabels:\n      tier: frontend\n  targetLabels:\n    - tier\n  endpoints:\n  - port: web\n    interval: 10s\n  namespaceSelector:\n    matchNames:\n      - default\n"
  },
  {
    "path": "examples/example-grafana-dashboard.json",
    "content": "{\n    \"annotations\": {\n        \"list\": [\n\n        ]\n    },\n    \"editable\": false,\n    \"gnetid\": null,\n    \"graphtooltip\": 0,\n    \"hidecontrols\": false,\n    \"id\": null,\n    \"links\": [\n\n    ],\n    \"refresh\": \"\",\n    \"rows\": [\n        {\n            \"collapse\": false,\n            \"collapsed\": false,\n            \"height\": \"250px\",\n            \"panels\": [\n                {\n                    \"aliascolors\": {\n\n                    },\n                    \"bars\": false,\n                    \"dashlength\": 10,\n                    \"dashes\": false,\n                    \"datasource\": \"$datasource\",\n                    \"fill\": 1,\n                    \"gridpos\": {\n\n                    },\n                    \"id\": 2,\n                    \"legend\": {\n                        \"alignastable\": false,\n                        \"avg\": false,\n                        \"current\": false,\n                        \"max\": false,\n                        \"min\": false,\n                        \"rightside\": false,\n                        \"show\": true,\n                        \"total\": false,\n                        \"values\": false\n                    },\n                    \"lines\": true,\n                    \"linewidth\": 1,\n                    \"nullpointmode\": \"null\",\n                    \"percentage\": false,\n                    \"pointradius\": 5,\n                    \"points\": false,\n                    \"renderer\": \"flot\",\n                    \"repeat\": null,\n                    \"seriesoverrides\": [\n\n                    ],\n                    \"spacelength\": 10,\n                    \"span\": 6,\n                    \"stack\": false,\n                    \"steppedline\": false,\n                    \"targets\": [\n                        {\n                            \"expr\": \"vector(1)\",\n                            \"format\": \"time_series\",\n                            \"intervalfactor\": 2,\n                            \"legendformat\": \"\",\n                            \"refid\": \"a\"\n                        }\n                    ],\n                    \"thresholds\": [\n\n                    ],\n                    \"timefrom\": null,\n                    \"timeshift\": null,\n                    \"title\": \"my panel\",\n                    \"tooltip\": {\n                        \"shared\": true,\n                        \"sort\": 0,\n                        \"value_type\": \"individual\"\n                    },\n                    \"type\": \"graph\",\n                    \"xaxis\": {\n                        \"buckets\": null,\n                        \"mode\": \"time\",\n                        \"name\": null,\n                        \"show\": true,\n                        \"values\": [\n\n                        ]\n                    },\n                    \"yaxes\": [\n                        {\n                            \"format\": \"short\",\n                            \"label\": null,\n                            \"logbase\": 1,\n                            \"max\": null,\n                            \"min\": null,\n                            \"show\": true\n                        },\n                        {\n                            \"format\": \"short\",\n                            \"label\": null,\n                            \"logbase\": 1,\n                            \"max\": null,\n                            \"min\": null,\n                            \"show\": true\n                        }\n                    ]\n                }\n            ],\n            \"repeat\": null,\n            \"repeatiteration\": null,\n            \"repeatrowid\": null,\n            \"showtitle\": false,\n            \"title\": \"dashboard row\",\n            \"titlesize\": \"h6\",\n            \"type\": \"row\"\n        }\n    ],\n    \"schemaversion\": 14,\n    \"style\": \"dark\",\n    \"tags\": [\n\n    ],\n    \"templating\": {\n        \"list\": [\n            {\n                \"current\": {\n                    \"text\": \"prometheus\",\n                    \"value\": \"prometheus\"\n                },\n                \"hide\": 0,\n                \"label\": null,\n                \"name\": \"datasource\",\n                \"options\": [\n\n                ],\n                \"query\": \"prometheus\",\n                \"refresh\": 1,\n                \"regex\": \"\",\n                \"type\": \"datasource\"\n            }\n        ]\n    },\n    \"time\": {\n        \"from\": \"now-6h\",\n        \"to\": \"now\"\n    },\n    \"timepicker\": {\n        \"refresh_intervals\": [\n            \"5s\",\n            \"10s\",\n            \"30s\",\n            \"1m\",\n            \"5m\",\n            \"15m\",\n            \"30m\",\n            \"1h\",\n            \"2h\",\n            \"1d\"\n        ],\n        \"time_options\": [\n            \"5m\",\n            \"15m\",\n            \"1h\",\n            \"6h\",\n            \"12h\",\n            \"24h\",\n            \"2d\",\n            \"7d\",\n            \"30d\"\n        ]\n    },\n    \"timezone\": \"browser\",\n    \"title\": \"my dashboard\",\n    \"version\": 0\n}\n"
  },
  {
    "path": "examples/existingrule.json",
    "content": "{\"groups\":[{\"name\":\"example-group\",\"rules\":[{\"alert\":\"ExampleAlert\",\"annotations\":{\"description\":\"This is an example alert.\"},\"expr\":\"vector(1)\",\"labels\":{\"severity\":\"warning\"}}]}]}"
  },
  {
    "path": "examples/existingrule.yaml",
    "content": "groups:\n- name: example-group\n  rules:\n  - alert: ExampleAlert\n    expr: vector(1)\n    labels:\n      severity: \"warning\"\n    annotations:\n      description: This is an example alert.\n"
  },
  {
    "path": "examples/grafana-additional-jsonnet-dashboard-example.jsonnet",
    "content": "local grafana = import 'grafonnet/grafana.libsonnet';\nlocal dashboard = grafana.dashboard;\nlocal row = grafana.row;\nlocal prometheus = grafana.prometheus;\nlocal template = grafana.template;\nlocal graphPanel = grafana.graphPanel;\n\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+:: {\n      namespace: 'monitoring',\n    },\n    grafana+: {\n      dashboards+:: {\n        'my-dashboard.json':\n          dashboard.new('My Dashboard')\n          .addTemplate(\n            {\n              current: {\n                text: 'Prometheus',\n                value: 'Prometheus',\n              },\n              hide: 0,\n              label: null,\n              name: 'datasource',\n              options: [],\n              query: 'prometheus',\n              refresh: 1,\n              regex: '',\n              type: 'datasource',\n            },\n          )\n          .addRow(\n            row.new()\n            .addPanel(graphPanel.new('My Panel', span=6, datasource='$datasource')\n                      .addTarget(prometheus.target('vector(1)')))\n          ),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/grafana-additional-rendered-dashboard-example-2.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+:: {\n      namespace: 'monitoring',\n    },\n    grafana+: {\n      rawDashboards+:: {\n        'my-dashboard.json': (importstr 'example-grafana-dashboard.json'),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/grafana-additional-rendered-dashboard-example.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+:: {\n      namespace: 'monitoring',\n    },\n    grafana+: {\n      dashboards+:: {  // use this method to import your dashboards to Grafana\n        'my-dashboard.json': (import 'example-grafana-dashboard.json'),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/grafana-ldap.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      grafana+: {\n        config+: {\n          sections: {\n            'auth.ldap': {\n              enabled: true,\n              config_file: '/etc/grafana/ldap.toml',\n              allow_sign_up: true,\n            },\n          },\n        },\n        ldap: |||\n          [[servers]]\n          host = \"127.0.0.1\"\n          port = 389\n          use_ssl = false\n          start_tls = false\n          ssl_skip_verify = false\n\n          bind_dn = \"cn=admins,dc=example,dc=com\"\n          bind_password = 'grafana'\n\n          search_filter = \"(cn=%s)\"\n          search_base_dns = [\"dc=example,dc=com\"]\n        |||,\n      },\n    },\n  };\n\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/grafana-only-dashboards.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n\n    // Disable all grafana-related objects apart from dashboards and datasource\n    grafana: {\n      dashboardSources:: {},\n      deployment:: {},\n      serviceAccount:: {},\n      serviceMonitor:: {},\n      service:: {},\n    },\n  };\n\n// Manifestation\n{\n  [component + '-' + resource + '.json']: kp[component][resource]\n  for component in std.objectFields(kp)\n  for resource in std.objectFields(kp[component])\n}\n"
  },
  {
    "path": "examples/ingress-one-to-many.jsonnet",
    "content": "local ingress(name, namespace, rules) = {\n  apiVersion: 'networking.k8s.io/v1',\n  kind: 'Ingress',\n  metadata: {\n    name: name,\n    namespace: namespace,\n    annotations: {\n      'nginx.ingress.kubernetes.io/auth-type': 'basic',\n      'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',\n      'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',\n    },\n  },\n  spec: { rules: rules },\n};\n\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    _config+:: {\n      namespace: 'monitoring',\n      grafana+:: {\n        config+: {\n          sections+: {\n            server+: {\n              root_url: 'http://grafana.example.com/',\n            },\n          },\n        },\n      },\n    },\n    // Configure External URL's per application\n    alertmanager+:: {\n      alertmanager+: {\n        spec+: {\n          externalUrl: 'http://alertmanager.example.com',\n        },\n      },\n    },\n    prometheus+:: {\n      prometheus+: {\n        spec+: {\n          externalUrl: 'http://prometheus.example.com',\n        },\n      },\n    },\n    // Create one ingress object that routes to each individual application\n    ingress+:: {\n      'kube-prometheus': ingress(\n        'kube-prometheus',\n        $._config.namespace,\n        [\n          {\n            host: 'alertmanager.example.com',\n            http: {\n              paths: [{\n                backend: {\n                  service: {\n                    name: 'alertmanager-main',\n                    port: 'web',\n                  },\n                },\n              }],\n            },\n          },\n          {\n            host: 'grafana.example.com',\n            http: {\n              paths: [{\n                backend: {\n                  service: {\n                    name: 'grafana',\n                    port: 'http',\n                  },\n                },\n              }],\n            },\n          },\n          {\n            host: 'alertmanager.example.com',\n            http: {\n              paths: [{\n                backend: {\n                  service: {\n                    name: 'prometheus-k8s',\n                    port: 'web',\n                  },\n                },\n              }],\n            },\n          },\n        ]\n      ),\n\n    },\n  } + {\n    // Create basic auth secret - replace 'auth' file with your own\n    ingress+:: {\n      'basic-auth-secret': {\n        apiVersion: 'v1',\n        kind: 'Secret',\n        metadata: {\n          name: 'basic-auth',\n          namespace: $._config.namespace,\n        },\n        data: { auth: std.base64(importstr 'auth') },\n        type: 'Opaque',\n      },\n    },\n  };\n\n{ [name + '-ingress']: kp.ingress[name] for name in std.objectFields(kp.ingress) }\n"
  },
  {
    "path": "examples/ingress.jsonnet",
    "content": "local ingress(name, namespace, rules) = {\n  apiVersion: 'networking.k8s.io/v1',\n  kind: 'Ingress',\n  metadata: {\n    name: name,\n    namespace: namespace,\n    annotations: {\n      'nginx.ingress.kubernetes.io/auth-type': 'basic',\n      'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',\n      'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',\n    },\n  },\n  spec: { rules: rules },\n};\n\nlocal kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      grafana+:: {\n        config+: {\n          sections+: {\n            server+: {\n              root_url: 'http://grafana.example.com/',\n            },\n          },\n        },\n      },\n    },\n    // Configure External URL's per application\n    alertmanager+:: {\n      alertmanager+: {\n        spec+: {\n          externalUrl: 'http://alertmanager.example.com',\n        },\n      },\n    },\n    prometheus+:: {\n      prometheus+: {\n        spec+: {\n          externalUrl: 'http://prometheus.example.com',\n        },\n      },\n    },\n    // Create ingress objects per application\n    ingress+:: {\n      'alertmanager-main': ingress(\n        'alertmanager-main',\n        $.values.common.namespace,\n        [{\n          host: 'alertmanager.example.com',\n          http: {\n            paths: [{\n              path: '/',\n              pathType: 'Prefix',\n              backend: {\n                service: {\n                  name: 'alertmanager-main',\n                  port: {\n                    name: 'web',\n                  },\n                },\n              },\n            }],\n          },\n        }]\n      ),\n      grafana: ingress(\n        'grafana',\n        $.values.common.namespace,\n        [{\n          host: 'grafana.example.com',\n          http: {\n            paths: [{\n              path: '/',\n              pathType: 'Prefix',\n              backend: {\n                service: {\n                  name: 'grafana',\n                  port: {\n                    name: 'http',\n                  },\n                },\n              },\n            }],\n          },\n        }],\n      ),\n      'prometheus-k8s': ingress(\n        'prometheus-k8s',\n        $.values.common.namespace,\n        [{\n          host: 'prometheus.example.com',\n          http: {\n            paths: [{\n              path: '/',\n              pathType: 'Prefix',\n              backend: {\n                service: {\n                  name: 'prometheus-k8s',\n                  port: {\n                    name: 'web',\n                  },\n                },\n              },\n            }],\n          },\n        }],\n      ),\n    },\n  } + {\n    // Create basic auth secret - replace 'auth' file with your own\n    ingress+:: {\n      'basic-auth-secret': {\n        apiVersion: 'v1',\n        kind: 'Secret',\n        metadata: {\n          name: 'basic-auth',\n          namespace: $.values.common.namespace,\n        },\n        data: { auth: std.base64(importstr 'auth') },\n        type: 'Opaque',\n      },\n    },\n  };\n\n{ [name + '-ingress']: kp.ingress[name] for name in std.objectFields(kp.ingress) }\n"
  },
  {
    "path": "examples/internal-registry.jsonnet",
    "content": "local mixin = import 'kube-prometheus/addons/config-mixins.libsonnet';\nlocal kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n} + mixin.withImageRepository('internal-registry.com/organization');\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/jsonnet-build-snippet/build-snippet.jsonnet",
    "content": "{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/jsonnet-snippets/node-ports.jsonnet",
    "content": "(import 'kube-prometheus/main.libsonnet') +\n(import 'kube-prometheus/addons/node-ports.libsonnet')\n"
  },
  {
    "path": "examples/jsonnet-snippets/platform.jsonnet",
    "content": "(import 'kube-prometheus/main.libsonnet') +\n{\n  values+:: {\n    common+: {\n      platform: 'example-platform',\n    },\n  },\n}\n"
  },
  {
    "path": "examples/kubeProxy.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n\n    kubernetesControlPlane+: {\n      kubeProxy: true,\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n"
  },
  {
    "path": "examples/kustomize.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') + {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n  };\n\nlocal manifests =\n  {\n    ['setup/' + resource]: kp[component][resource]\n    for component in std.objectFields(kp)\n    for resource in std.filter(\n      function(resource)\n        kp[component][resource].kind == 'CustomResourceDefinition' || kp[component][resource].kind == 'Namespace', std.objectFields(kp[component])\n    )\n  } +\n  {\n    [component + '-' + resource]: kp[component][resource]\n    for component in std.objectFields(kp)\n    for resource in std.filter(\n      function(resource)\n        kp[component][resource].kind != 'CustomResourceDefinition' && kp[component][resource].kind != 'Namespace', std.objectFields(kp[component])\n    )\n  };\n\nlocal kustomizationResourceFile(name) = './manifests/' + name + '.yaml';\nlocal kustomization = {\n  apiVersion: 'kustomize.config.k8s.io/v1beta1',\n  kind: 'Kustomization',\n  resources: std.map(kustomizationResourceFile, std.objectFields(manifests)),\n};\n\nmanifests {\n  '../kustomization': kustomization,\n}\n"
  },
  {
    "path": "examples/minikube.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // Note that NodePort type services is likely not a good idea for your production use case, it is only used for demonstration purposes here.\n  (import 'kube-prometheus/addons/node-ports.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      alertmanager+: {\n        config: importstr 'alertmanager-config.yaml',\n      },\n      grafana+: {\n        config: {  // http://docs.grafana.org/installation/configuration/\n          sections: {\n            // Do not require grafana users to login/authenticate\n            'auth.anonymous': { enabled: true },\n          },\n        },\n      },\n      kubePrometheus+: {\n        platform: 'kubeadm',\n      },\n    },\n\n    // For simplicity, each of the following values for 'externalUrl':\n    //  * assume that `minikube ip` prints \"192.168.99.100\"\n    //  * hard-code the NodePort for each app\n    prometheus+: {\n      prometheus+: {\n        // Reference info: https://coreos.com/operators/prometheus/docs/latest/api.html#prometheusspec\n        spec+: {\n          // An e.g. of the purpose of this is so the \"Source\" links on http://<alert-manager>/#/alerts are valid.\n          externalUrl: 'http://192.168.99.100:30900',\n\n          // Reference info: \"external_labels\" on https://prometheus.io/docs/prometheus/latest/configuration/configuration/\n          externalLabels: {\n            // This 'cluster' label will be included on every firing prometheus alert. (This is more useful\n            // when running multiple clusters in a shared environment (e.g. AWS) with other users.)\n            cluster: 'minikube-<INSERT YOUR USERNAME HERE>',\n          },\n        },\n      },\n    },\n    alertmanager+: {\n      alertmanager+: {\n        // Reference info: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec\n        spec+: {\n          externalUrl: 'http://192.168.99.100:30903',\n\n          logLevel: 'debug',  // So firing alerts show up in log\n        },\n      },\n    },\n  };\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/mixin-inclusion.jsonnet",
    "content": "local addMixin = (import 'kube-prometheus/lib/mixin.libsonnet');\nlocal etcdMixin = addMixin({\n  name: 'etcd',\n  mixin: (import 'github.com/etcd-io/etcd/contrib/mixin/mixin.libsonnet') + {\n    _config+: {},  // mixin configuration object\n  },\n});\n\nlocal kp = (import 'kube-prometheus/main.libsonnet') +\n           {\n             values+:: {\n               common+: {\n                 namespace: 'monitoring',\n               },\n               grafana+: {\n                 // Adding new dashboard to grafana. This will modify grafana configMap with dashboards\n                 dashboards+: etcdMixin.grafanaDashboards,\n               },\n             },\n           };\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n// Rendering prometheusRules object. This is an object compatible with prometheus-operator CRD definition for prometheusRule\n{ 'external-mixins/etcd-mixin-prometheus-rules': etcdMixin.prometheusRules }\n"
  },
  {
    "path": "examples/name-namespace-overrides.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           {\n             values+:: {\n               common+: {\n                 namespace: 'monitoring',\n               },\n\n               prometheus+: {\n                 namespace: 'foo',\n                 name: 'bar',\n               },\n\n               alertmanager+: {\n                 namespace: 'bar',\n                 name: 'foo',\n               },\n             },\n           };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n// Add the restricted psp to setup\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/networkpolicies-disabled.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/networkpolicies-disabled.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n};\n\n{\n  ['setup/' + resource]: kp[component][resource]\n  for component in std.objectFields(kp)\n  for resource in std.filter(\n    function(resource)\n      kp[component][resource].kind == 'CustomResourceDefinition' || kp[component][resource].kind == 'Namespace', std.objectFields(kp[component])\n  )\n} +\n{\n  [component + '-' + resource]: kp[component][resource]\n  for component in std.objectFields(kp)\n  for resource in std.filter(\n    function(resource)\n      kp[component][resource].kind != 'CustomResourceDefinition' && kp[component][resource].kind != 'Namespace', std.objectFields(kp[component])\n  )\n}\n"
  },
  {
    "path": "examples/pod-security-policies.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  (import 'kube-prometheus/addons/podsecuritypolicies.libsonnet');\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n// Add the restricted psp to setup\n{ 'setup/0podsecuritypolicy-restricted': kp.restrictedPodSecurityPolicy } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/prometheus-additional-alert-rule-example.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  exampleApplication: {\n    prometheusRuleExample: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'my-prometheus-rule',\n        namespace: $.values.common.namespace,\n      },\n      spec: {\n        groups: [\n          {\n            name: 'example-group',\n            rules: [\n              {\n                alert: 'ExampleAlert',\n                expr: 'vector(1)',\n                labels: {\n                  severity: 'warning',\n                },\n                annotations: {\n                  description: 'This is an example alert.',\n                },\n              },\n            ],\n          },\n        ],\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n"
  },
  {
    "path": "examples/prometheus-additional-recording-rule-example.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  exampleApplication: {\n    prometheusRuleExample: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'my-prometheus-rule',\n        namespace: $.values.common.namespace,\n      },\n      spec: {\n        groups: [\n          {\n            name: 'example-group',\n            rules: [\n              {\n                record: 'some_recording_rule_name',\n                expr: 'vector(1)',\n              },\n            ],\n          },\n        ],\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n"
  },
  {
    "path": "examples/prometheus-additional-rendered-rule-example.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  exampleApplication: {\n    prometheusRuleExample: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        name: 'my-prometheus-rule',\n        namespace: $.values.common.namespace,\n      },\n      spec: {\n        groups: (import 'existingrule.json').groups,\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) }\n"
  },
  {
    "path": "examples/prometheus-agent.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      prometheus+: {\n        resources: {\n          requests: { memory: '100Mi' },\n        },\n        enableFeatures: ['agent'],\n      },\n    },\n    prometheus+: {\n      prometheus+: {\n        spec+: {\n          replicas: 1,\n          alerting:: {},\n          ruleSelector:: {},\n          remoteWrite: [{\n            url: 'http://remote-write-url.com',\n          }],\n          containers+: [\n            {\n              name: 'prometheus',\n              args+: [\n                '--config.file=/etc/prometheus/config_out/prometheus.env.yaml',\n                '--storage.agent.path=/prometheus',\n                '--enable-feature=agent',\n                '--web.enable-lifecycle',\n              ],\n            },\n          ],\n        },\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/prometheus-pvc.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // Uncomment the following imports to enable its patches\n  // (import 'kube-prometheus/addons/anti-affinity.libsonnet') +\n  // (import 'kube-prometheus/addons/managed-cluster.libsonnet') +\n  // (import 'kube-prometheus/addons/node-ports.libsonnet') +\n  // (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n\n    prometheus+:: {\n      prometheus+: {\n        spec+: {  // https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\n          // If a value isn't specified for 'retention', then by default the '--storage.tsdb.retention=24h' arg will be passed to prometheus by prometheus-operator.\n          // The possible values for a prometheus <duration> are:\n          //  * https://github.com/prometheus/common/blob/c7de230/model/time.go#L178 specifies \"^([0-9]+)(y|w|d|h|m|s|ms)$\" (years weeks days hours minutes seconds milliseconds)\n          retention: '30d',\n\n          // Reference info: https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md\n          // By default (if the following 'storage.volumeClaimTemplate' isn't created), prometheus will be created with an EmptyDir for the 'prometheus-k8s-db' volume (for the prom tsdb).\n          // This 'storage.volumeClaimTemplate' causes the following to be automatically created (via dynamic provisioning) for each prometheus pod:\n          //  * PersistentVolumeClaim (and a corresponding PersistentVolume)\n          //  * the actual volume (per the StorageClassName specified below)\n          storage: {  // https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#storagespec\n            volumeClaimTemplate: {  // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#persistentvolumeclaim-v1-core (defines variable named 'spec' of type 'PersistentVolumeClaimSpec')\n              apiVersion: 'v1',\n              kind: 'PersistentVolumeClaim',\n              spec: {\n                accessModes: ['ReadWriteOnce'],\n                // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#resourcerequirements-v1-core (defines 'requests'),\n                // and https://kubernetes.io/docs/concepts/policy/resource-quotas/#storage-resource-quota (defines 'requests.storage')\n                resources: { requests: { storage: '100Gi' } },\n                // A StorageClass of the following name (which can be seen via `kubectl get storageclass` from a node in the given K8s cluster) must exist prior to kube-prometheus being deployed.\n                storageClassName: 'ssd',\n                // The following 'selector' is only needed if you're using manual storage provisioning (https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md#manual-storage-provisioning).\n                // And note that this is not supported/allowed by AWS - uncommenting the following 'selector' line (when deploying kube-prometheus to a K8s cluster in AWS) will cause the pvc to be stuck in the Pending status and have the following error:\n                //  * 'Failed to provision volume with StorageClass \"ssd\": claim.Spec.Selector is not supported for dynamic provisioning on AWS'\n                // selector: { matchLabels: {} },\n              },\n            },\n          },  // storage\n        },  // spec\n      },  // prometheus\n    },  // prometheus\n\n  };\n\n{ ['setup/0namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor is separated so that it can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/prometheus-thanos.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  // Uncomment the following imports to enable its patches\n  // (import 'kube-prometheus/addons/anti-affinity.libsonnet') +\n  // (import 'kube-prometheus/addons/managed-cluster.libsonnet') +\n  // (import 'kube-prometheus/addons/node-ports.libsonnet') +\n  // (import 'kube-prometheus/addons/static-etcd.libsonnet') +\n  // (import 'kube-prometheus/addons/custom-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/external-metrics.libsonnet') +\n  // (import 'kube-prometheus/addons/pyrra.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      prometheus+: {\n        thanos: {\n          baseImage: 'quay.io/thanos/thanos',\n          version: 'v0.8.1',\n          objectStorageConfig: {\n            key: 'thanos.yaml',\n            name: 'thanos-objstore-config',\n          },\n        },\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/rule-patcher.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n    },\n  };\n\nlocal rulePatches = import 'rule-patches.libsonnet';\n\nlocal sanitizePrometheusRules = (import 'kube-prometheus/lib/rule-sanitizer.libsonnet')(rulePatches).sanitizePrometheusRules;\n\nsanitizePrometheusRules({ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n                        {\n                          ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n                          for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n                        } +\n                        // serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n                        { 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n                        { 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n                        { 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n                        { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n                        { ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n                        { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n                        { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n                        { ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n                        { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n                        { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n                        { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) })\n"
  },
  {
    "path": "examples/rule-patches.libsonnet",
    "content": "{\n  excludedRuleGroups: [\n    'alertmanager.rules',\n  ],\n  excludedRules: [\n    {\n      name: 'prometheus-operator',\n      rules: [\n        { alert: 'PrometheusOperatorListErrors' },\n      ],\n    },\n  ],\n  patchedRules: [\n    {\n      name: 'prometheus-operator',\n      rules: [\n        {\n          alert: 'PrometheusOperatorWatchErrors',\n          labels: {\n            severity: 'info',\n          },\n        },\n      ],\n    },\n  ],\n}\n"
  },
  {
    "path": "examples/strip-limits.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/strip-limits.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/sync-to-internal-registry.jsonnet",
    "content": "local l = import 'kube-prometheus/addons/config-mixins.libsonnet';\nlocal kp = import 'kube-prometheus/main.libsonnet';\nlocal config = kp.values.common;\n\nlocal makeImages(config) = [\n  {\n    name: config.images[image],\n  }\n  for image in std.objectFields(config.images)\n];\n\nlocal upstreamImage(image) = '%s' % [image.name];\nlocal downstreamImage(registry, image) = '%s/%s' % [registry, l.imageName(image.name)];\n\nlocal pullPush(image, newRegistry) = [\n  'docker pull %s' % upstreamImage(image),\n  'docker tag %s %s' % [upstreamImage(image), downstreamImage(newRegistry, image)],\n  'docker push %s' % downstreamImage(newRegistry, image),\n];\n\nlocal images = makeImages(config);\n\nlocal output(repository) = std.flattenArrays([\n  pullPush(image, repository)\n  for image in images\n]);\n\nfunction(repository='my-registry.com/repository')\n  std.join('\\n', output(repository))\n"
  },
  {
    "path": "examples/thanos-sidecar.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      prometheus+: {\n        thanos: {\n          version: '0.19.0',\n          image: 'quay.io/thanos/thanos:v0.19.0',\n          objectStorageConfig: {\n            key: 'thanos.yaml',  // How the file inside the secret is called\n            name: 'thanos-objectstorage',  // This is the name of your Kubernetes secret with the config\n          },\n        },\n      },\n    },\n  };\n\n{ ['setup/0namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor is separated so that it can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/tolerations.libsonnet",
    "content": "{\n  prometheus+: {\n    prometheus+: {\n      spec+: {\n        tolerations: [\n          {\n            key: 'key1',\n            operator: 'Equal',\n            value: 'value1',\n            effect: 'NoSchedule',\n          },\n          {\n            key: 'key2',\n            operator: 'Exists',\n          },\n        ],\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "examples/weave-net-example.jsonnet",
    "content": "local kp = (import 'kube-prometheus/main.libsonnet') +\n           (import 'kube-prometheus/addons/weave-net/weave-net.libsonnet') + {\n  values+:: {\n    common+: {\n      namespace: 'monitoring',\n    },\n  },\n  kubernetesControlPlane+: {\n    prometheusRuleWeaveNet+: {\n      spec+: {\n        groups: std.map(\n          function(group)\n            if group.name == 'weave-net' then\n              group {\n                rules: std.map(\n                  function(rule)\n                    if rule.alert == 'WeaveNetFastDPFlowsLow' then\n                      rule {\n                        expr: 'sum(weave_flows) < 20000',\n                      }\n                    else if rule.alert == 'WeaveNetIPAMUnreachable' then\n                      rule {\n                        expr: 'weave_ipam_unreachable_percentage > 25',\n                      }\n                    else\n                      rule\n                  ,\n                  group.rules\n                ),\n              }\n            else\n              group,\n          super.groups\n        ),\n      },\n    },\n  },\n};\n\n{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +\n{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }\n"
  },
  {
    "path": "examples/windows-hostprocess.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  (import 'kube-prometheus/addons/windows-hostprocess.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      windowsExporter+:: {\n        image: 'ghcr.io/prometheus-community/windows-exporter',\n        version: '0.21.0',\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['windows-exporter-' + name]: kp.windowsExporter[name] for name in std.objectFields(kp.windowsExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "examples/windows.jsonnet",
    "content": "local kp =\n  (import 'kube-prometheus/main.libsonnet') +\n  (import 'kube-prometheus/addons/windows.libsonnet') +\n  {\n    values+:: {\n      common+: {\n        namespace: 'monitoring',\n      },\n      windowsScrapeConfig+:: {\n        static_configs: [{\n          targets: ['10.240.0.65:5000', '10.240.0.63:5000'],\n        }],\n      },\n    },\n  };\n\n{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +\n{\n  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]\n  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))\n} +\n// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready\n{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +\n{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +\n{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +\n{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +\n{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +\n{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +\n{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +\n{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }\n{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +\n{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +\n{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }\n"
  },
  {
    "path": "experimental/metrics-server/auth-delegator.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: metrics-server:system:auth-delegator\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: system:auth-delegator\nsubjects:\n- kind: ServiceAccount\n  name: metrics-server\n  namespace: kube-system\n"
  },
  {
    "path": "experimental/metrics-server/auth-reader.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: metrics-server-auth-reader\n  namespace: kube-system\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: extension-apiserver-authentication-reader\nsubjects:\n- kind: ServiceAccount\n  name: metrics-server\n  namespace: kube-system\n"
  },
  {
    "path": "experimental/metrics-server/metrics-apiservice.yaml",
    "content": "apiVersion: apiregistration.k8s.io/v1beta1\nkind: APIService\nmetadata:\n  name: v1beta1.metrics.k8s.io\nspec:\n  service:\n    name: metrics-server\n    namespace: kube-system\n  group: metrics.k8s.io\n  version: v1beta1\n  insecureSkipTLSVerify: true\n  groupPriorityMinimum: 100\n  versionPriority: 100\n"
  },
  {
    "path": "experimental/metrics-server/metrics-server-cluster-role-binding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: system:metrics-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: system:metrics-server\nsubjects:\n- kind: ServiceAccount\n  name: metrics-server\n  namespace: kube-system\n"
  },
  {
    "path": "experimental/metrics-server/metrics-server-cluster-role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: system:metrics-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  - nodes\n  - nodes/stats\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"apps\"\n  resources:\n  - deployments\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"extensions\"\n  resources:\n  - deployments\n  verbs:\n  - get\n  - list\n  - watch\n"
  },
  {
    "path": "experimental/metrics-server/metrics-server-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: metrics-server\n  namespace: kube-system\n  labels:\n    k8s-app: metrics-server\nspec:\n  selector:\n    matchLabels:\n      k8s-app: metrics-server\n  template:\n    metadata:\n      name: metrics-server\n      labels:\n        k8s-app: metrics-server\n    spec:\n      serviceAccountName: metrics-server\n      containers:\n      - name: metrics-server\n        image: gcr.io/google_containers/metrics-server-amd64:v0.2.0\n        imagePullPolicy: Always\n        command:\n        - /metrics-server\n        - --source=kubernetes.summary_api:''\n"
  },
  {
    "path": "experimental/metrics-server/metrics-server-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: metrics-server\n  namespace: kube-system\n"
  },
  {
    "path": "experimental/metrics-server/metrics-server-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: metrics-server\n  namespace: kube-system\n  labels:\n    kubernetes.io/name: \"Metrics-server\"\nspec:\n  selector:\n    k8s-app: metrics-server\n  ports:\n  - port: 443\n    protocol: TCP\n    targetPort: 443\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/prometheus-operator/kube-prometheus\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/Jeffail/gabs v1.4.0\n\tgithub.com/prometheus/client_golang v1.23.2\n\tk8s.io/apimachinery v0.35.2\n\tk8s.io/client-go v0.35.2\n)\n\nrequire (\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect\n\tgithub.com/emicklei/go-restful/v3 v3.12.2 // indirect\n\tgithub.com/fxamacker/cbor/v2 v2.9.0 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-openapi/jsonpointer v0.21.0 // indirect\n\tgithub.com/go-openapi/jsonreference v0.20.2 // indirect\n\tgithub.com/go-openapi/swag v0.23.0 // indirect\n\tgithub.com/google/gnostic-models v0.7.0 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/josharian/intern v1.0.0 // indirect\n\tgithub.com/json-iterator/go v1.1.12 // indirect\n\tgithub.com/mailru/easyjson v0.7.7 // indirect\n\tgithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect\n\tgithub.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect\n\tgithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect\n\tgithub.com/prometheus/client_model v0.6.2 // indirect\n\tgithub.com/prometheus/common v0.66.1 // indirect\n\tgithub.com/spf13/pflag v1.0.9 // indirect\n\tgithub.com/x448/float16 v0.8.4 // indirect\n\tgo.yaml.in/yaml/v2 v2.4.3 // indirect\n\tgo.yaml.in/yaml/v3 v3.0.4 // indirect\n\tgolang.org/x/net v0.47.0 // indirect\n\tgolang.org/x/oauth2 v0.30.0 // indirect\n\tgolang.org/x/sys v0.38.0 // indirect\n\tgolang.org/x/term v0.37.0 // indirect\n\tgolang.org/x/text v0.31.0 // indirect\n\tgolang.org/x/time v0.9.0 // indirect\n\tgoogle.golang.org/protobuf v1.36.8 // indirect\n\tgopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect\n\tgopkg.in/inf.v0 v0.9.1 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n\tk8s.io/api v0.35.2 // indirect\n\tk8s.io/klog/v2 v2.130.1 // indirect\n\tk8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect\n\tk8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect\n\tsigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect\n\tsigs.k8s.io/randfill v1.0.0 // indirect\n\tsigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect\n\tsigs.k8s.io/yaml v1.6.0 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo=\ngithub.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc=\ngithub.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=\ngithub.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=\ngithub.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=\ngithub.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=\ngithub.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=\ngithub.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=\ngithub.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=\ngithub.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=\ngithub.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=\ngithub.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=\ngithub.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=\ngithub.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=\ngithub.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=\ngithub.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=\ngithub.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=\ngithub.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=\ngithub.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=\ngithub.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=\ngithub.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=\ngithub.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=\ngithub.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=\ngithub.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=\ngithub.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=\ngithub.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=\ngithub.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=\ngithub.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=\ngithub.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=\ngithub.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns=\ngithub.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=\ngithub.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=\ngithub.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=\ngithub.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=\ngithub.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=\ngithub.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=\ngithub.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=\ngithub.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=\ngithub.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=\ngithub.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=\ngithub.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=\ngithub.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=\ngithub.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=\ngithub.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=\ngithub.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=\ngithub.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=\ngo.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=\ngo.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=\ngo.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=\ngo.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=\ngolang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=\ngolang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=\ngolang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=\ngolang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=\ngolang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=\ngolang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=\ngolang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=\ngolang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=\ngolang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=\ngolang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=\ngolang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=\ngolang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=\ngolang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=\ngolang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=\ngolang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=\ngolang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=\ngolang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=\ngoogle.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=\ngoogle.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=\ngopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=\ngopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=\ngopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nk8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw=\nk8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60=\nk8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8=\nk8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=\nk8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o=\nk8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g=\nk8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=\nk8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=\nk8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=\nk8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=\nk8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=\nk8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=\nsigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=\nsigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=\nsigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=\nsigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=\nsigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=\nsigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=\nsigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=\nsigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=\n"
  },
  {
    "path": "jsonnet/kube-prometheus/.gitignore",
    "content": "jsonnetfile.lock.json\nvendor/\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/all-namespaces.libsonnet",
    "content": "{\n  prometheus+: {\n    clusterRole+: {\n      rules+: [\n        {\n          apiGroups: ['discovery.k8s.io'],\n          resources: ['endpointslices'],\n          verbs: ['get', 'list', 'watch'],\n        },\n        {\n          apiGroups: [''],\n          resources: ['services', 'endpoints', 'pods'],\n          verbs: ['get', 'list', 'watch'],\n        },\n        {\n          apiGroups: ['networking.k8s.io'],\n          resources: ['ingresses'],\n          verbs: ['get', 'list', 'watch'],\n        },\n      ],\n    },\n    // There is no need for specific namespaces RBAC as this addon grants\n    // all required permissions for every namespace\n    roleBindingSpecificNamespaces:: null,\n    roleSpecificNamespaces:: null,\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/anti-affinity.libsonnet",
    "content": "{\n  values+:: {\n    alertmanager+: {\n      podAntiAffinity: 'soft',\n      podAntiAffinityTopologyKey: 'kubernetes.io/hostname',\n    },\n    prometheus+: {\n      podAntiAffinity: 'soft',\n      podAntiAffinityTopologyKey: 'kubernetes.io/hostname',\n    },\n    blackboxExporter+: {\n      podAntiAffinity: 'soft',\n      podAntiAffinityTopologyKey: 'kubernetes.io/hostname',\n    },\n    prometheusAdapter+: {\n      podAntiAffinity: 'soft',\n      podAntiAffinityTopologyKey: 'kubernetes.io/hostname',\n    },\n  },\n\n  antiaffinity(labelSelector, namespace, type, topologyKey):: {\n    local podAffinityTerm = {\n      namespaces: [namespace],\n      topologyKey: topologyKey,\n      labelSelector: {\n        matchLabels: labelSelector,\n      },\n    },\n\n    affinity: {\n      podAntiAffinity: if type == 'soft' then {\n        preferredDuringSchedulingIgnoredDuringExecution: [{\n          weight: 100,\n          podAffinityTerm: podAffinityTerm,\n        }],\n      } else if type == 'hard' then {\n        requiredDuringSchedulingIgnoredDuringExecution: [\n          podAffinityTerm,\n        ],\n      } else error 'podAntiAffinity must be either \"soft\" or \"hard\"',\n    },\n  },\n\n  alertmanager+: {\n    alertmanager+: {\n      spec+:\n        $.antiaffinity(\n          $.alertmanager._config.selectorLabels,\n          $.values.alertmanager.namespace,\n          $.values.alertmanager.podAntiAffinity,\n          $.values.alertmanager.podAntiAffinityTopologyKey,\n        ),\n    },\n  },\n\n  prometheus+: {\n    prometheus+: {\n      spec+:\n        $.antiaffinity(\n          $.prometheus._config.selectorLabels,\n          $.values.prometheus.namespace,\n          $.values.prometheus.podAntiAffinity,\n          $.values.prometheus.podAntiAffinityTopologyKey,\n        ),\n    },\n  },\n\n  blackboxExporter+: {\n    deployment+: {\n      spec+: {\n        template+: {\n          spec+:\n            $.antiaffinity(\n              $.blackboxExporter._config.selectorLabels,\n              $.values.blackboxExporter.namespace,\n              $.values.blackboxExporter.podAntiAffinity,\n              $.values.blackboxExporter.podAntiAffinityTopologyKey,\n            ),\n        },\n      },\n    },\n  },\n\n  prometheusAdapter+: {\n    deployment+: {\n      spec+: {\n        template+: {\n          spec+:\n            $.antiaffinity(\n              $.prometheusAdapter._config.selectorLabels,\n              $.values.prometheusAdapter.namespace,\n              $.values.prometheusAdapter.podAntiAffinity,\n              $.values.prometheusAdapter.podAntiAffinityTopologyKey,\n            ),\n        },\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/aws-vpc-cni.libsonnet",
    "content": "{\n  values+:: {\n    awsVpcCni: {\n      // `minimumWarmIPs` should be inferior or equal to `WARM_IP_TARGET`.\n      //\n      // References:\n      // https://github.com/aws/amazon-vpc-cni-k8s/blob/v1.9.0/docs/eni-and-ip-target.md\n      // https://github.com/aws/amazon-vpc-cni-k8s/blob/v1.9.0/pkg/ipamd/ipamd.go#L61-L71\n      minimumWarmIPs: 10,\n      minimumWarmIPsTime: '10m',\n    },\n  },\n  kubernetesControlPlane+: {\n    serviceAwsVpcCni: {\n      apiVersion: 'v1',\n      kind: 'Service',\n      metadata: {\n        name: 'aws-node',\n        namespace: 'kube-system',\n        labels: {\n          'app.kubernetes.io/name': 'aws-node',\n          'app.kubernetes.io/component': 'cni',\n          'app.kubernetes.io/part-of': 'kube-prometheus',\n        },\n      },\n      spec: {\n        ports: [\n          {\n            name: 'cni-metrics-port',\n            port: 61678,\n            targetPort: 61678,\n          },\n        ],\n        selector: { 'app.kubernetes.io/name': 'aws-node' },\n        clusterIP: 'None',\n      },\n    },\n\n    serviceMonitorAwsVpcCni: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'ServiceMonitor',\n      metadata: {\n        name: 'aws-node',\n        namespace: $.values.kubernetesControlPlane.namespace,\n        labels: {\n          'app.kubernetes.io/name': 'aws-node',\n          'app.kubernetes.io/component': 'cni',\n          'app.kubernetes.io/part-of': 'kube-prometheus',\n        },\n      },\n      spec: {\n        jobLabel: 'app.kubernetes.io/name',\n        selector: {\n          matchLabels: {\n            'app.kubernetes.io/name': 'aws-node',\n            'app.kubernetes.io/component': 'cni',\n          },\n        },\n        namespaceSelector: {\n          matchNames: [\n            'kube-system',\n          ],\n        },\n        endpoints: [\n          {\n            port: 'cni-metrics-port',\n            interval: '30s',\n            path: '/metrics',\n            relabelings: [\n              {\n                action: 'replace',\n                regex: '(.*)',\n                replacement: '$1',\n                sourceLabels: ['__meta_kubernetes_pod_node_name'],\n                targetLabel: 'instance',\n              },\n            ],\n          },\n        ],\n      },\n    },\n\n    prometheusRuleAwsVpcCni: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        labels: {\n          'app.kubernetes.io/name': 'prometheus-vpc-cni-rules',\n          'app.kubernetes.io/component': 'prometheus',\n          'app.kubernetes.io/part-of': 'kube-prometheus',\n        },\n        name: 'aws-vpc-cni-rules',\n        namespace: $.values.prometheus.namespace,\n      },\n      spec: {\n        groups: [\n          {\n            name: 'aws-vpc-cni.rules',\n            rules: [\n              {\n                expr: 'sum by(instance) (awscni_total_ip_addresses) - sum by(instance) (awscni_assigned_ip_addresses) < %s' % $.values.awsVpcCni.minimumWarmIPs,\n                labels: {\n                  severity: 'critical',\n                },\n                annotations: {\n                  summary: 'AWS VPC CNI has a low warm IP pool',\n                  description: |||\n                    Instance {{ $labels.instance }} has only {{ $value }} warm IPs which is lower than set threshold of %s.\n                    It could mean the current subnet is out of available IP addresses or the CNI is unable to request them from the EC2 API.\n                  ||| % $.values.awsVpcCni.minimumWarmIPs,\n                },\n                'for': $.values.awsVpcCni.minimumWarmIPsTime,\n                alert: 'AwsVpcCniWarmIPsLow',\n              },\n            ],\n          },\n        ],\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/config-mixins.libsonnet",
    "content": "local imageName(image) =\n  local parts = std.split(image, '/');\n  local len = std.length(parts);\n  if len == 3 then\n    // registry.com/org/image\n    parts[2]\n  else if len == 2 then\n    // org/image\n    parts[1]\n  else if len == 1 then\n    // image, ie. busybox\n    parts[0]\n  else\n    error 'unknown image format: ' + image;\n\n\n// withImageRepository is a mixin that replaces all images prefixes by repository. eg.\n// quay.io/coreos/addon-resizer -> $repository/addon-resizer\n// grafana/grafana -> grafana $repository/grafana\nlocal withImageRepository(repository) = {\n  local oldRepos = super.values.common.images,\n  local substituteRepository(image, repository) =\n    if repository == null then image else repository + '/' + imageName(image),\n  values+:: {\n    common+:: {\n      images:: {\n        [field]: substituteRepository(oldRepos[field], repository)\n        for field in std.objectFields(oldRepos)\n      },\n    },\n  },\n};\n\n{\n  imageName:: imageName,\n}\n\n{\n  withImageRepository:: withImageRepository,\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/custom-metrics.libsonnet",
    "content": "// Custom metrics API allows the HPA v2 to scale based on arbirary metrics.\n// For more details on usage visit https://github.com/DirectXMan12/k8s-prometheus-adapter#quick-links\n\n{\n  values+:: {\n    prometheusAdapter+: {\n      // Rules for custom-metrics\n      config+:: {\n        rules+: [\n          {\n            seriesQuery: '{__name__=~\"^container_.*\",container!=\"POD\",namespace!=\"\",pod!=\"\"}',\n            seriesFilters: [],\n            resources: {\n              overrides: {\n                namespace: { resource: 'namespace' },\n                pod: { resource: 'pod' },\n              },\n            },\n            name: { matches: '^container_(.*)_seconds_total$', as: '' },\n            metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!=\"POD\"}[1m])) by (<<.GroupBy>>)',\n          },\n          {\n            seriesQuery: '{__name__=~\"^container_.*\",container!=\"POD\",namespace!=\"\",pod!=\"\"}',\n            seriesFilters: [\n              { isNot: '^container_.*_seconds_total$' },\n            ],\n            resources: {\n              overrides: {\n                namespace: { resource: 'namespace' },\n                pod: { resource: 'pod' },\n              },\n            },\n            name: { matches: '^container_(.*)_total$', as: '' },\n            metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!=\"POD\"}[1m])) by (<<.GroupBy>>)',\n          },\n          {\n            seriesQuery: '{__name__=~\"^container_.*\",container!=\"POD\",namespace!=\"\",pod!=\"\"}',\n            seriesFilters: [\n              { isNot: '^container_.*_total$' },\n            ],\n            resources: {\n              overrides: {\n                namespace: { resource: 'namespace' },\n                pod: { resource: 'pod' },\n              },\n            },\n            name: { matches: '^container_(.*)$', as: '' },\n            metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>,container!=\"POD\"}) by (<<.GroupBy>>)',\n          },\n          {\n            seriesQuery: '{namespace!=\"\",__name__!~\"^container_.*\"}',\n            seriesFilters: [\n              { isNot: '.*_total$' },\n            ],\n            resources: { template: '<<.Resource>>' },\n            name: { matches: '', as: '' },\n            metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)',\n          },\n          {\n            seriesQuery: '{namespace!=\"\",__name__!~\"^container_.*\"}',\n            seriesFilters: [\n              { isNot: '.*_seconds_total' },\n            ],\n            resources: { template: '<<.Resource>>' },\n            name: { matches: '^(.*)_total$', as: '' },\n            metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)',\n          },\n          {\n            seriesQuery: '{namespace!=\"\",__name__!~\"^container_.*\"}',\n            seriesFilters: [],\n            resources: { template: '<<.Resource>>' },\n            name: { matches: '^(.*)_seconds_total$', as: '' },\n            metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)',\n          },\n        ],\n      },\n    },\n  },\n\n  prometheusAdapter+: {\n    customMetricsApiService: {\n      apiVersion: 'apiregistration.k8s.io/v1',\n      kind: 'APIService',\n      metadata: {\n        name: 'v1beta1.custom.metrics.k8s.io',\n      },\n      spec: {\n        service: {\n          name: $.prometheusAdapter.service.metadata.name,\n          namespace: $.values.prometheusAdapter.namespace,\n        },\n        group: 'custom.metrics.k8s.io',\n        version: 'v1beta1',\n        insecureSkipTLSVerify: true,\n        groupPriorityMinimum: 100,\n        versionPriority: 100,\n      },\n    },\n    customMetricsApiServiceV1Beta2: {\n      apiVersion: 'apiregistration.k8s.io/v1',\n      kind: 'APIService',\n      metadata: {\n        name: 'v1beta2.custom.metrics.k8s.io',\n      },\n      spec: {\n        service: {\n          name: $.prometheusAdapter.service.metadata.name,\n          namespace: $.values.prometheusAdapter.namespace,\n        },\n        group: 'custom.metrics.k8s.io',\n        version: 'v1beta2',\n        insecureSkipTLSVerify: true,\n        groupPriorityMinimum: 100,\n        versionPriority: 200,\n      },\n    },\n    customMetricsClusterRoleServerResources: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRole',\n      metadata: {\n        name: 'custom-metrics-server-resources',\n      },\n      rules: [{\n        apiGroups: ['custom.metrics.k8s.io'],\n        resources: ['*'],\n        verbs: ['*'],\n      }],\n    },\n    customMetricsClusterRoleBindingServerResources: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRoleBinding',\n      metadata: {\n        name: 'custom-metrics-server-resources',\n      },\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'ClusterRole',\n        name: 'custom-metrics-server-resources',\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: $.prometheusAdapter.serviceAccount.metadata.name,\n        namespace: $.values.prometheusAdapter.namespace,\n      }],\n    },\n    customMetricsClusterRoleBindingHPA: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRoleBinding',\n      metadata: {\n        name: 'hpa-controller-custom-metrics',\n      },\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'ClusterRole',\n        name: 'custom-metrics-server-resources',\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: 'horizontal-pod-autoscaler',\n        namespace: 'kube-system',\n      }],\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/dropping-deprecated-metrics-relabelings.libsonnet",
    "content": "[\n  // Drop all kubelet metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: 'kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)',\n    action: 'drop',\n  },\n  // Drop all scheduler metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: 'scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)',\n    action: 'drop',\n  },\n  // Drop all apiserver metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: 'apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers|storage_db_total_size_in_bytes|flowcontrol_request_concurrency_limit|flowcontrol_request_concurrency_in_use|storage_objects)',\n    action: 'drop',\n  },\n  // Drop all docker metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: 'kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)',\n    action: 'drop',\n  },\n  // Drop all reflector metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: 'reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)',\n    action: 'drop',\n  },\n  // Drop all etcd metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: 'etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)',\n    action: 'drop',\n  },\n  // Drop all transformation metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: 'transformation_(transformation_latencies_microseconds|failures_total)',\n    action: 'drop',\n  },\n  // Drop all other metrics which are deprecated in kubernetes.\n  {\n    sourceLabels: ['__name__'],\n    regex: '(' + std.join('|',\n                          [\n                            'admission_quota_controller_adds',\n                            'admission_quota_controller_depth',\n                            'admission_quota_controller_longest_running_processor_microseconds',\n                            'admission_quota_controller_queue_latency',\n                            'admission_quota_controller_unfinished_work_seconds',\n                            'admission_quota_controller_work_duration',\n                            'APIServiceOpenAPIAggregationControllerQueue1_adds',\n                            'APIServiceOpenAPIAggregationControllerQueue1_depth',\n                            'APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds',\n                            'APIServiceOpenAPIAggregationControllerQueue1_queue_latency',\n                            'APIServiceOpenAPIAggregationControllerQueue1_retries',\n                            'APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds',\n                            'APIServiceOpenAPIAggregationControllerQueue1_work_duration',\n                            'APIServiceRegistrationController_adds',\n                            'APIServiceRegistrationController_depth',\n                            'APIServiceRegistrationController_longest_running_processor_microseconds',\n                            'APIServiceRegistrationController_queue_latency',\n                            'APIServiceRegistrationController_retries',\n                            'APIServiceRegistrationController_unfinished_work_seconds',\n                            'APIServiceRegistrationController_work_duration',\n                            'autoregister_adds',\n                            'autoregister_depth',\n                            'autoregister_longest_running_processor_microseconds',\n                            'autoregister_queue_latency',\n                            'autoregister_retries',\n                            'autoregister_unfinished_work_seconds',\n                            'autoregister_work_duration',\n                            'AvailableConditionController_adds',\n                            'AvailableConditionController_depth',\n                            'AvailableConditionController_longest_running_processor_microseconds',\n                            'AvailableConditionController_queue_latency',\n                            'AvailableConditionController_retries',\n                            'AvailableConditionController_unfinished_work_seconds',\n                            'AvailableConditionController_work_duration',\n                            'crd_autoregistration_controller_adds',\n                            'crd_autoregistration_controller_depth',\n                            'crd_autoregistration_controller_longest_running_processor_microseconds',\n                            'crd_autoregistration_controller_queue_latency',\n                            'crd_autoregistration_controller_retries',\n                            'crd_autoregistration_controller_unfinished_work_seconds',\n                            'crd_autoregistration_controller_work_duration',\n                            'crdEstablishing_adds',\n                            'crdEstablishing_depth',\n                            'crdEstablishing_longest_running_processor_microseconds',\n                            'crdEstablishing_queue_latency',\n                            'crdEstablishing_retries',\n                            'crdEstablishing_unfinished_work_seconds',\n                            'crdEstablishing_work_duration',\n                            'crd_finalizer_adds',\n                            'crd_finalizer_depth',\n                            'crd_finalizer_longest_running_processor_microseconds',\n                            'crd_finalizer_queue_latency',\n                            'crd_finalizer_retries',\n                            'crd_finalizer_unfinished_work_seconds',\n                            'crd_finalizer_work_duration',\n                            'crd_naming_condition_controller_adds',\n                            'crd_naming_condition_controller_depth',\n                            'crd_naming_condition_controller_longest_running_processor_microseconds',\n                            'crd_naming_condition_controller_queue_latency',\n                            'crd_naming_condition_controller_retries',\n                            'crd_naming_condition_controller_unfinished_work_seconds',\n                            'crd_naming_condition_controller_work_duration',\n                            'crd_openapi_controller_adds',\n                            'crd_openapi_controller_depth',\n                            'crd_openapi_controller_longest_running_processor_microseconds',\n                            'crd_openapi_controller_queue_latency',\n                            'crd_openapi_controller_retries',\n                            'crd_openapi_controller_unfinished_work_seconds',\n                            'crd_openapi_controller_work_duration',\n                            'DiscoveryController_adds',\n                            'DiscoveryController_depth',\n                            'DiscoveryController_longest_running_processor_microseconds',\n                            'DiscoveryController_queue_latency',\n                            'DiscoveryController_retries',\n                            'DiscoveryController_unfinished_work_seconds',\n                            'DiscoveryController_work_duration',\n                            'kubeproxy_sync_proxy_rules_latency_microseconds',\n                            'non_structural_schema_condition_controller_adds',\n                            'non_structural_schema_condition_controller_depth',\n                            'non_structural_schema_condition_controller_longest_running_processor_microseconds',\n                            'non_structural_schema_condition_controller_queue_latency',\n                            'non_structural_schema_condition_controller_retries',\n                            'non_structural_schema_condition_controller_unfinished_work_seconds',\n                            'non_structural_schema_condition_controller_work_duration',\n                            'rest_client_request_latency_seconds',\n                            'storage_operation_errors_total',\n                            'storage_operation_status_count',\n                          ]) + ')',\n    action: 'drop',\n  },\n]\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/external-metrics.libsonnet",
    "content": "// External metrics API allows the HPA v2 to scale based on metrics coming from outside of Kubernetes cluster\n// For more details on usage visit https://github.com/DirectXMan12/k8s-prometheus-adapter#quick-links\n\n{\n  values+:: {\n    prometheusAdapter+: {\n      // Rules for external-metrics\n      config+:: {\n        externalRules+: [\n          // {\n          //   seriesQuery: '{__name__=~\"^.*_queue$\",namespace!=\"\"}',\n          //   seriesFilters: [],\n          //   resources: {\n          //     overrides: {\n          //       namespace: { resource: 'namespace' }\n          //     },\n          //   },\n          //   name: { matches: '^.*_queue$', as: '$0' },\n          //   metricsQuery: 'max(<<.Series>>{<<.LabelMatchers>>})',\n          // },\n        ],\n      },\n    },\n  },\n\n  prometheusAdapter+: {\n    externalMetricsApiService: {\n      apiVersion: 'apiregistration.k8s.io/v1',\n      kind: 'APIService',\n      metadata: {\n        name: 'v1beta1.external.metrics.k8s.io',\n      },\n      spec: {\n        service: {\n          name: $.prometheusAdapter.service.metadata.name,\n          namespace: $.values.prometheusAdapter.namespace,\n        },\n        group: 'external.metrics.k8s.io',\n        version: 'v1beta1',\n        insecureSkipTLSVerify: true,\n        groupPriorityMinimum: 100,\n        versionPriority: 100,\n      },\n    },\n    externalMetricsClusterRoleServerResources: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRole',\n      metadata: {\n        name: 'external-metrics-server-resources',\n      },\n      rules: [{\n        apiGroups: ['external.metrics.k8s.io'],\n        resources: ['*'],\n        verbs: ['*'],\n      }],\n    },\n    externalMetricsClusterRoleBindingServerResources: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRoleBinding',\n      metadata: {\n        name: 'external-metrics-server-resources',\n      },\n\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'ClusterRole',\n        name: 'external-metrics-server-resources',\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: $.prometheusAdapter.serviceAccount.metadata.name,\n        namespace: $.values.prometheusAdapter.namespace,\n      }],\n    },\n    externalMetricsClusterRoleBindingHPA: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRoleBinding',\n      metadata: {\n        name: 'hpa-controller-external-metrics',\n      },\n\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'ClusterRole',\n        name: 'external-metrics-server-resources',\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: 'horizontal-pod-autoscaler',\n        namespace: 'kube-system',\n      }],\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/insecure-kubelet.libsonnet",
    "content": "{\n  prometheus+: {\n    serviceMonitorKubelet+:\n      {\n        spec+: {\n          endpoints: [\n            {\n              port: 'http-metrics',\n              scheme: 'http',\n              interval: '30s',\n              bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n              relabelings: [\n                { sourceLabels: ['__metrics_path__'], targetLabel: 'metrics_path' },\n              ],\n            },\n            {\n              port: 'http-metrics',\n              scheme: 'http',\n              path: '/metrics/cadvisor',\n              interval: '30s',\n              honorLabels: true,\n              bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n              relabelings: [\n                { sourceLabels: ['__metrics_path__'], targetLabel: 'metrics_path' },\n              ],\n              metricRelabelings: [\n                // Drop a bunch of metrics which are disabled but still sent, see\n                // https://github.com/google/cadvisor/issues/1925.\n                {\n                  sourceLabels: ['__name__'],\n                  regex: 'container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)',\n                  action: 'drop',\n                },\n              ],\n            },\n          ],\n        },\n      },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/ksm-autoscaler.libsonnet",
    "content": "{\n  values+:: {\n    clusterVerticalAutoscaler: {\n      version: '0.8.1',\n      image: 'gcr.io/google_containers/cpvpa-amd64:v0.8.1',\n      baseCPU: '1m',\n      stepCPU: '1m',\n      baseMemory: '1Mi',\n      stepMemory: '2Mi',\n    },\n  },\n  ksmAutoscaler+: {\n    clusterRole: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRole',\n      metadata: { name: 'ksm-autoscaler' },\n      rules: [{\n        apiGroups: [''],\n        resources: ['nodes'],\n        verbs: ['list', 'watch'],\n      }],\n    },\n\n    clusterRoleBinding: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRoleBinding',\n      metadata: { name: 'ksm-autoscaler' },\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'ClusterRole',\n        name: 'ksm-autoscaler',\n      },\n      subjects: [{ kind: 'ServiceAccount', name: 'ksm-autoscaler', namespace: $.values.kubeStateMetrics.namespace }],\n    },\n\n    roleBinding: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'RoleBinding',\n      metadata: {\n        name: 'ksm-autoscaler',\n        namespace: $.values.kubeStateMetrics.namespace,\n      },\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'Role',\n        name: 'ksm-autoscaler',\n      },\n      subjects: [{ kind: 'ServiceAccount', name: 'ksm-autoscaler' }],\n    },\n\n    role: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'Role',\n      metadata: {\n        name: 'ksm-autoscaler',\n        namespace: $.values.kubeStateMetrics.namespace,\n      },\n      rules: [\n        {\n          apiGroups: ['extensions'],\n          resources: ['deployments'],\n          verbs: ['patch'],\n          resourceNames: ['kube-state-metrics'],\n        },\n        {\n          apiGroups: ['apps'],\n          resources: ['deployments'],\n          verbs: ['patch'],\n          resourceNames: ['kube-state-metrics'],\n        },\n      ],\n    },\n\n    serviceAccount: {\n      apiVersion: 'v1',\n      kind: 'ServiceAccount',\n      metadata: {\n        name: 'ksm-autoscaler',\n        namespace: $.values.kubeStateMetrics.namespace,\n      },\n    },\n\n    deployment:\n      local podLabels = { 'app.kubernetes.io/name': 'ksm-autoscaler' };\n      local c = {\n        name: 'ksm-autoscaler',\n        image: $.values.clusterVerticalAutoscaler.image,\n        args: [\n          '/cpvpa',\n          '--target=deployment/kube-state-metrics',\n          '--namespace=' + $.values.kubeStateMetrics.namespace,\n          '--logtostderr=true',\n          '--poll-period-seconds=10',\n          '--default-config={\"kube-state-metrics\":{\"requests\":{\"cpu\":{\"base\":\"' + $.values.clusterVerticalAutoscaler.baseCPU +\n          '\",\"step\":\"' + $.values.clusterVerticalAutoscaler.stepCPU +\n          '\",\"nodesPerStep\":1},\"memory\":{\"base\":\"' + $.values.clusterVerticalAutoscaler.baseMemory +\n          '\",\"step\":\"' + $.values.clusterVerticalAutoscaler.stepMemory +\n          '\",\"nodesPerStep\":1}},\"limits\":{\"cpu\":{\"base\":\"' + $.values.clusterVerticalAutoscaler.baseCPU +\n          '\",\"step\":\"' + $.values.clusterVerticalAutoscaler.stepCPU +\n          '\",\"nodesPerStep\":1},\"memory\":{\"base\":\"' + $.values.clusterVerticalAutoscaler.baseMemory +\n          '\",\"step\":\"' + $.values.clusterVerticalAutoscaler.stepMemory + '\",\"nodesPerStep\":1}}}}',\n        ],\n        resources: {\n          requests: { cpu: '20m', memory: '10Mi' },\n        },\n      };\n\n      {\n        apiVersion: 'apps/v1',\n        kind: 'Deployment',\n        metadata: {\n          name: 'ksm-autoscaler',\n          namespace: $.values.kubeStateMetrics.namespace,\n          labels: podLabels,\n        },\n        spec: {\n          replicas: 1,\n          selector: { matchLabels: podLabels },\n          template: {\n            metadata: {\n              labels: podLabels,\n            },\n            spec: {\n              containers: [c],\n              serviceAccount: 'ksm-autoscaler',\n              nodeSelector: { 'kubernetes.io/os': 'linux' },\n              securityContext: {\n                runAsNonRoot: true,\n                runAsUser: 65534,\n              },\n            },\n          },\n        },\n      },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/ksm-lite.libsonnet",
    "content": "local addArgs(args, name, containers) = std.map(\n  function(c) if c.name == name then\n    c {\n      args+: args,\n    }\n  else c,\n  containers,\n);\n\n{\n  kubeStateMetrics+: {\n    deployment+: {\n      spec+: {\n        template+: {\n          spec+: {\n            containers: addArgs(\n              [|||\n                --metric-denylist=\n                ^kube_.+_created$,\n                ^kube_.+_metadata_resource_version$,\n                ^kube_replicaset_metadata_generation$,\n                ^kube_replicaset_status_observed_generation$,\n                ^kube_pod_restart_policy$,\n                ^kube_pod_init_container_status_terminated$,\n                ^kube_pod_init_container_status_running$,\n                ^kube_pod_container_status_terminated$,\n                ^kube_pod_container_status_running$,\n                ^kube_pod_completion_time$,\n                ^kube_pod_status_scheduled$\n              |||],\n              'kube-state-metrics',\n              super.containers\n            ),\n          },\n        },\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/managed-cluster.libsonnet",
    "content": "// On managed Kubernetes clusters some of the control plane components are not exposed to customers.\n// Disable scrape jobs, service monitors, and alert groups for these components by overwriting 'main.libsonnet' defaults\n\n{\n  kubernetesControlPlane+: {\n    serviceMonitorKubeControllerManager:: null,\n    serviceMonitorKubeScheduler:: null,\n  } + {\n    prometheusRule+: {\n      spec+: {\n        local g = super.groups,\n        groups: [\n          h\n          for h in g\n          if !std.setMember(h.name, ['kubernetes-system-controller-manager', 'kubernetes-system-scheduler'])\n        ],\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/networkpolicies-disabled.libsonnet",
    "content": "// Disables creation of NetworkPolicies\n\n{\n  blackboxExporter+: {\n    networkPolicy:: {},\n  },\n\n  kubeStateMetrics+: {\n    networkPolicy:: {},\n  },\n\n  nodeExporter+: {\n    networkPolicy:: {},\n  },\n\n  prometheusAdapter+: {\n    networkPolicy:: {},\n  },\n\n  alertmanager+: {\n    networkPolicy:: {},\n  },\n\n  grafana+: {\n    networkPolicy:: {},\n  },\n\n  prometheus+: {\n    networkPolicy:: {},\n  },\n\n  prometheusOperator+: {\n    networkPolicy:: {},\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/node-ports.libsonnet",
    "content": "local patch(ports) = {\n  spec+: {\n    ports: ports,\n    type: 'NodePort',\n  },\n};\n\n{\n  prometheus+: {\n    service+: patch([{ name: 'web', port: 9090, targetPort: 'web', nodePort: 30900 }]),\n  },\n  alertmanager+: {\n    service+: patch([{ name: 'web', port: 9093, targetPort: 'web', nodePort: 30903 }]),\n  },\n  grafana+: {\n    service+: patch([{ name: 'http', port: 3000, targetPort: 'http', nodePort: 30902 }]),\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/podsecuritypolicies.libsonnet",
    "content": "local restrictedPodSecurityPolicy = {\n  apiVersion: 'policy/v1beta1',\n  kind: 'PodSecurityPolicy',\n  metadata: {\n    name: 'kube-prometheus-restricted',\n  },\n  spec: {\n    privileged: false,\n    // Required to prevent escalations to root.\n    allowPrivilegeEscalation: false,\n    // This is redundant with non-root + disallow privilege escalation,\n    // but we can provide it for defense in depth.\n    requiredDropCapabilities: ['ALL'],\n    // Allow core volume types.\n    volumes: [\n      'configMap',\n      'emptyDir',\n      'secret',\n      'projected',\n      // Assume that persistentVolumes set up by the cluster admin are safe to use.\n      'persistentVolumeClaim',\n    ],\n    hostNetwork: false,\n    hostIPC: false,\n    hostPID: false,\n    runAsUser: {\n      // Require the container to run without root privileges.\n      rule: 'MustRunAsNonRoot',\n    },\n    seLinux: {\n      // This policy assumes the nodes are using AppArmor rather than SELinux.\n      rule: 'RunAsAny',\n    },\n    supplementalGroups: {\n      rule: 'MustRunAs',\n      ranges: [{\n        // Forbid adding the root group.\n        min: 1,\n        max: 65535,\n      }],\n    },\n    fsGroup: {\n      rule: 'MustRunAs',\n      ranges: [{\n        // Forbid adding the root group.\n        min: 1,\n        max: 65535,\n      }],\n    },\n    readOnlyRootFilesystem: false,\n  },\n};\n\n{\n  restrictedPodSecurityPolicy: restrictedPodSecurityPolicy,\n\n  alertmanager+: {\n    role: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'Role',\n      metadata: {\n        name: 'alertmanager-' + $.values.alertmanager.name,\n        namespace: $.values.alertmanager.namespace,\n      },\n      rules: [{\n        apiGroups: ['policy'],\n        resources: ['podsecuritypolicies'],\n        verbs: ['use'],\n        resourceNames: [restrictedPodSecurityPolicy.metadata.name],\n      }],\n    },\n\n    roleBinding: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'RoleBinding',\n      metadata: {\n        name: 'alertmanager-' + $.values.alertmanager.name,\n        namespace: $.values.alertmanager.namespace,\n      },\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'Role',\n        name: 'alertmanager-' + $.values.alertmanager.name,\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: 'alertmanager-' + $.values.alertmanager.name,\n        namespace: $.values.alertmanager.namespace,\n      }],\n    },\n  },\n\n  blackboxExporter+: {\n    clusterRole+: {\n      rules+: [\n        {\n          apiGroups: ['policy'],\n          resources: ['podsecuritypolicies'],\n          verbs: ['use'],\n          resourceNames: ['blackbox-exporter-psp'],\n        },\n      ],\n    },\n\n    podSecurityPolicy:\n      local blackboxExporterPspPrivileged =\n        if $.blackboxExporter._config.privileged then\n          {\n            metadata+: {\n              name: 'blackbox-exporter-psp',\n            },\n            spec+: {\n              privileged: true,\n              allowedCapabilities: ['NET_RAW'],\n              runAsUser: {\n                rule: 'RunAsAny',\n              },\n            },\n          }\n        else\n          {\n            metadata+: {\n              name: 'blackbox-exporter-psp',\n            },\n          };\n\n      restrictedPodSecurityPolicy + blackboxExporterPspPrivileged,\n  },\n\n  grafana+: {\n    role: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'Role',\n      metadata: {\n        name: 'grafana',\n        namespace: $.values.grafana.namespace,\n      },\n      rules: [{\n        apiGroups: ['policy'],\n        resources: ['podsecuritypolicies'],\n        verbs: ['use'],\n        resourceNames: [restrictedPodSecurityPolicy.metadata.name],\n      }],\n    },\n\n    roleBinding: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'RoleBinding',\n      metadata: {\n        name: 'grafana',\n        namespace: $.values.grafana.namespace,\n      },\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'Role',\n        name: 'grafana',\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: $.grafana.serviceAccount.metadata.name,\n        namespace: $.grafana.serviceAccount.metadata.namespace,\n      }],\n    },\n  },\n\n  kubeStateMetrics+: {\n    clusterRole+: {\n      rules+: [{\n        apiGroups: ['policy'],\n        resources: ['podsecuritypolicies'],\n        verbs: ['use'],\n        resourceNames: ['kube-state-metrics-psp'],\n      }],\n    },\n\n    podSecurityPolicy: restrictedPodSecurityPolicy {\n      metadata+: {\n        name: 'kube-state-metrics-psp',\n      },\n      spec+: {\n        runAsUser: {\n          rule: 'RunAsAny',\n        },\n      },\n    },\n  },\n\n  nodeExporter+: {\n    clusterRole+: {\n      rules+: [{\n        apiGroups: ['policy'],\n        resources: ['podsecuritypolicies'],\n        verbs: ['use'],\n        resourceNames: ['node-exporter-psp'],\n      }],\n    },\n\n    podSecurityPolicy: restrictedPodSecurityPolicy {\n      metadata+: {\n        name: 'node-exporter-psp',\n      },\n      spec+: {\n        allowedCapabilities: [\n          'SYS_TIME',\n        ],\n        allowedHostPaths+: [\n          {\n            pathPrefix: '/proc',\n            readOnly: true,\n          },\n          {\n            pathPrefix: '/sys',\n            readOnly: true,\n          },\n          {\n            pathPrefix: '/',\n            readOnly: true,\n          },\n        ],\n        hostNetwork: true,\n        hostPID: true,\n        hostPorts: [\n          {\n            max: $.nodeExporter._config.port,\n            min: $.nodeExporter._config.port,\n          },\n        ],\n        readOnlyRootFilesystem: true,\n        volumes+: [\n          'hostPath',\n        ],\n      },\n    },\n  },\n\n  prometheusAdapter+: {\n    clusterRole+: {\n      rules+: [{\n        apiGroups: ['policy'],\n        resources: ['podsecuritypolicies'],\n        verbs: ['use'],\n        resourceNames: [restrictedPodSecurityPolicy.metadata.name],\n      }],\n    },\n  },\n\n  prometheusOperator+: {\n    clusterRole+: {\n      rules+: [{\n        apiGroups: ['policy'],\n        resources: ['podsecuritypolicies'],\n        verbs: ['use'],\n        resourceNames: [restrictedPodSecurityPolicy.metadata.name],\n      }],\n    },\n  },\n\n  prometheus+: {\n    clusterRole+: {\n      rules+: [{\n        apiGroups: ['policy'],\n        resources: ['podsecuritypolicies'],\n        verbs: ['use'],\n        resourceNames: [restrictedPodSecurityPolicy.metadata.name],\n      }],\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/pyrra.libsonnet",
    "content": "{\n  values+:: {\n    common+: {\n      versions+: {\n        pyrra: error 'must provide version',\n      } + (import '../versions.json'),\n      images+: {\n        pyrra+: 'ghcr.io/pyrra-dev/pyrra:v' + $.values.common.versions.pyrra,\n      },\n    },\n    pyrra+: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.pyrra,\n      image: $.values.common.images.pyrra,\n    },\n  },\n\n  local defaults = {\n    local defaults = self,\n\n    name:: 'pyrra',\n    namespace:: error 'must provide namespace',\n    version:: error 'must provide version',\n    image: error 'must provide image',\n    replicas:: 1,\n    port:: 9099,\n\n    commonLabels:: {\n      'app.kubernetes.io/name': 'pyrra',\n      'app.kubernetes.io/version': defaults.version,\n      'app.kubernetes.io/part-of': 'kube-prometheus',\n    },\n  },\n\n  local pyrra = function(params) {\n    local pyrra = self,\n    _config:: defaults + params,\n\n    crd: (\n      import 'github.com/pyrra-dev/pyrra/jsonnet/controller-gen/pyrra.dev_servicelevelobjectives.json'\n    ),\n\n\n    _apiMetadata:: {\n      name: pyrra._config.name + '-api',\n      namespace: pyrra._config.namespace,\n      labels: pyrra._config.commonLabels {\n        'app.kubernetes.io/component': 'api',\n      },\n    },\n    apiSelectorLabels:: {\n      [labelName]: pyrra._apiMetadata.labels[labelName]\n      for labelName in std.objectFields(pyrra._apiMetadata.labels)\n      if !std.setMember(labelName, ['app.kubernetes.io/version'])\n    },\n\n    apiService: {\n      apiVersion: 'v1',\n      kind: 'Service',\n      metadata: pyrra._apiMetadata,\n      spec: {\n        ports: [\n          { name: 'http', targetPort: pyrra._config.port, port: pyrra._config.port },\n        ],\n        selector: pyrra.apiSelectorLabels,\n      },\n    },\n\n    apiDeployment:\n      local c = {\n        name: pyrra._config.name,\n        image: pyrra._config.image,\n        args: [\n          'api',\n          '--api-url=http://%s.%s.svc.cluster.local:9444' % [pyrra.kubernetesService.metadata.name, pyrra.kubernetesService.metadata.namespace],\n          '--prometheus-url=http://prometheus-k8s.%s.svc.cluster.local:9090' % pyrra._config.namespace,\n        ],\n        // resources: pyrra._config.resources,\n        ports: [{ containerPort: pyrra._config.port }],\n        securityContext: {\n          allowPrivilegeEscalation: false,\n          readOnlyRootFilesystem: true,\n          runAsNonRoot: true,\n          capabilities: { drop: ['ALL'] },\n          seccompProfile: { type: 'RuntimeDefault' },\n        },\n      };\n\n      {\n        apiVersion: 'apps/v1',\n        kind: 'Deployment',\n        metadata: pyrra._apiMetadata,\n        spec: {\n          replicas: pyrra._config.replicas,\n          selector: {\n            matchLabels: pyrra.apiSelectorLabels,\n          },\n          strategy: {\n            rollingUpdate: {\n              maxSurge: 1,\n              maxUnavailable: 1,\n            },\n          },\n          template: {\n            metadata: { labels: pyrra._apiMetadata.labels },\n            spec: {\n              containers: [c],\n              // serviceAccountName: $.serviceAccount.metadata.name,\n              nodeSelector: { 'kubernetes.io/os': 'linux' },\n            },\n          },\n        },\n      },\n\n    _kubernetesMetadata:: {\n      name: pyrra._config.name + '-kubernetes',\n      namespace: pyrra._config.namespace,\n      labels: pyrra._config.commonLabels {\n        'app.kubernetes.io/component': 'kubernetes',\n      },\n    },\n    kubernetesSelectorLabels:: {\n      [labelName]: pyrra._kubernetesMetadata.labels[labelName]\n      for labelName in std.objectFields(pyrra._kubernetesMetadata.labels)\n      if !std.setMember(labelName, ['app.kubernetes.io/version'])\n    },\n\n    kubernetesServiceAccount: {\n      apiVersion: 'v1',\n      kind: 'ServiceAccount',\n      metadata: pyrra._kubernetesMetadata,\n    },\n\n    kubernetesClusterRole: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRole',\n      metadata: pyrra._kubernetesMetadata,\n      rules: [{\n        apiGroups: ['monitoring.coreos.com'],\n        resources: ['prometheusrules'],\n        verbs: ['create', 'delete', 'get', 'list', 'patch', 'update', 'watch'],\n      }, {\n        apiGroups: ['monitoring.coreos.com'],\n        resources: ['prometheusrules/status'],\n        verbs: ['get'],\n      }, {\n        apiGroups: ['pyrra.dev'],\n        resources: ['servicelevelobjectives'],\n        verbs: ['create', 'delete', 'get', 'list', 'patch', 'update', 'watch'],\n      }, {\n        apiGroups: ['pyrra.dev'],\n        resources: ['servicelevelobjectives/status'],\n        verbs: ['get', 'patch', 'update'],\n      }],\n    },\n\n    kubernetesClusterRoleBinding: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRoleBinding',\n      metadata: pyrra._kubernetesMetadata,\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'ClusterRole',\n        name: pyrra.kubernetesClusterRole.metadata.name,\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: pyrra.kubernetesServiceAccount.metadata.name,\n        namespace: pyrra._config.namespace,\n      }],\n    },\n\n    kubernetesService: {\n      apiVersion: 'v1',\n      kind: 'Service',\n      metadata: pyrra._kubernetesMetadata,\n      spec: {\n        ports: [\n          { name: 'http', targetPort: 9444, port: 9444 },\n        ],\n        selector: pyrra.kubernetesSelectorLabels,\n      },\n    },\n\n    kubernetesDeployment:\n      local c = {\n        name: pyrra._config.name,\n        image: pyrra._config.image,\n        args: [\n          'kubernetes',\n        ],\n        // resources: pyrra._config.resources,\n        ports: [{ containerPort: pyrra._config.port }],\n        securityContext: {\n          allowPrivilegeEscalation: false,\n          readOnlyRootFilesystem: true,\n        },\n      };\n\n      {\n        apiVersion: 'apps/v1',\n        kind: 'Deployment',\n        metadata: pyrra._kubernetesMetadata {\n          name: pyrra._config.name + '-kubernetes',\n        },\n        spec: {\n          replicas: pyrra._config.replicas,\n          selector: {\n            matchLabels: pyrra.kubernetesSelectorLabels,\n          },\n          strategy: {\n            rollingUpdate: {\n              maxSurge: 1,\n              maxUnavailable: 1,\n            },\n          },\n          template: {\n            metadata: { labels: pyrra._kubernetesMetadata.labels },\n            spec: {\n              containers: [c],\n              serviceAccountName: pyrra.kubernetesServiceAccount.metadata.name,\n              nodeSelector: { 'kubernetes.io/os': 'linux' },\n            },\n          },\n        },\n      },\n\n    // Most of these should eventually be moved to the components themselves.\n    // For now, this is a good start to have everything in one place.\n    'slo-apiserver-read-response-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'apiserver-read-response-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'apiserver_request_total{component=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}',\n            },\n            total: {\n              metric: 'apiserver_request_total{component=\"apiserver\",verb=~\"LIST|GET\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-apiserver-write-response-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'apiserver-write-response-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'apiserver_request_total{component=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}',\n            },\n            total: {\n              metric: 'apiserver_request_total{component=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-apiserver-read-resource-latency': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'apiserver-read-resource-latency',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          latency: {\n            success: {\n              metric: 'apiserver_request_duration_seconds_bucket{component=\"apiserver\",scope=~\"resource|\",verb=~\"LIST|GET\",le=\"0.1\"}',\n            },\n            total: {\n              metric: 'apiserver_request_duration_seconds_count{component=\"apiserver\",scope=~\"resource|\",verb=~\"LIST|GET\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-apiserver-read-namespace-latency': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'apiserver-read-namespace-latency',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          latency: {\n            success: {\n              metric: 'apiserver_request_duration_seconds_bucket{component=\"apiserver\",scope=~\"namespace|\",verb=~\"LIST|GET\",le=\"5\"}',\n            },\n            total: {\n              metric: 'apiserver_request_duration_seconds_count{component=\"apiserver\",scope=~\"namespace|\",verb=~\"LIST|GET\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-apiserver-read-cluster-latency': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'apiserver-read-cluster-latency',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          latency: {\n            success: {\n              metric: 'apiserver_request_duration_seconds_bucket{component=\"apiserver\",scope=~\"cluster|\",verb=~\"LIST|GET\",le=\"5\"}',\n            },\n            total: {\n              metric: 'apiserver_request_duration_seconds_count{component=\"apiserver\",scope=~\"cluster|\",verb=~\"LIST|GET\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-kubelet-request-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'kubelet-request-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'rest_client_requests_total{job=\"kubelet\",code=~\"5..\"}',\n            },\n            total: {\n              metric: 'rest_client_requests_total{job=\"kubelet\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-kubelet-runtime-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'kubelet-runtime-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'kubelet_runtime_operations_errors_total{job=\"kubelet\"}',\n            },\n            total: {\n              metric: 'kubelet_runtime_operations_total{job=\"kubelet\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-coredns-response-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'coredns-response-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99.99',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'coredns_dns_responses_total{job=\"kube-dns\",rcode=\"SERVFAIL\"}',\n            },\n            total: {\n              metric: 'coredns_dns_responses_total{job=\"kube-dns\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-prometheus-operator-reconcile-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'prometheus-operator-reconcile-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '95',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'prometheus_operator_reconcile_errors_total{job=\"prometheus-operator\"}',\n            },\n            total: {\n              metric: 'prometheus_operator_reconcile_operations_total{job=\"prometheus-operator\"}',\n            },\n            grouping: ['controller'],\n          },\n        },\n      },\n    },\n\n    'slo-prometheus-operator-http-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'prometheus-operator-http-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99.5',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'prometheus_operator_kubernetes_client_http_requests_total{job=\"prometheus-operator\",status_code=~\"5..\"}',\n            },\n            total: {\n              metric: 'prometheus_operator_kubernetes_client_http_requests_total{job=\"prometheus-operator\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-prometheus-rule-evaluation-failures': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'prometheus-rule-evaluation-failures',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99.99',\n        window: '2w',\n        description: 'Rule and alerting rules are being evaluated every few seconds. This needs to work for recording rules to be created and most importantly for alerts to be evaluated.',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'prometheus_rule_evaluation_failures_total{job=\"prometheus-k8s\"}',\n            },\n            total: {\n              metric: 'prometheus_rule_evaluations_total{job=\"prometheus-k8s\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-prometheus-sd-kubernetes-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'prometheus-sd-kubernetes-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: 'If there are too many errors Prometheus is having a bad time discovering new Kubernetes services.',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'prometheus_sd_kubernetes_http_request_total{job=\"prometheus-k8s\",status_code=~\"5..|<error>\"}',\n            },\n            total: {\n              metric: 'prometheus_sd_kubernetes_http_request_total{job=\"prometheus-k8s\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-prometheus-query-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'prometheus-query-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            grouping: ['handler'],\n            errors: {\n              metric: 'prometheus_http_requests_total{job=\"prometheus-k8s\",handler=~\"/api/v1/query.*\",code=~\"5..\"}',\n            },\n            total: {\n              metric: 'prometheus_http_requests_total{job=\"prometheus-k8s\",handler=~\"/api/v1/query.*\"}',\n            },\n          },\n        },\n      },\n    },\n\n    'slo-prometheus-notification-errors': {\n      apiVersion: 'pyrra.dev/v1alpha1',\n      kind: 'ServiceLevelObjective',\n      metadata: {\n        name: 'prometheus-notification-errors',\n        namespace: pyrra._config.namespace,\n        labels: {\n          prometheus: 'k8s',\n          role: 'alert-rules',\n        },\n      },\n      spec: {\n        target: '99',\n        window: '2w',\n        description: '',\n        indicator: {\n          ratio: {\n            errors: {\n              metric: 'prometheus_notifications_errors_total{job=\"prometheus-k8s\"}',\n            },\n            total: {\n              metric: 'prometheus_notifications_sent_total{job=\"prometheus-k8s\"}',\n            },\n          },\n        },\n      },\n    },\n  },\n\n  pyrra: pyrra($.values.pyrra),\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/static-etcd.libsonnet",
    "content": "(import 'github.com/etcd-io/etcd/contrib/mixin/mixin.libsonnet') + {\n  values+:: {\n    etcd: {\n      ips: [],\n      clientCA: null,\n      clientKey: null,\n      clientCert: null,\n      serverName: null,\n      insecureSkipVerify: null,\n    },\n  },\n  prometheus+: {\n    serviceEtcd: {\n      apiVersion: 'v1',\n      kind: 'Service',\n      metadata: {\n        name: 'etcd',\n        namespace: 'kube-system',\n        labels: { 'app.kubernetes.io/name': 'etcd' },\n      },\n      spec: {\n        ports: [\n          { name: 'metrics', targetPort: 2379, port: 2379 },\n        ],\n        clusterIP: 'None',\n      },\n    },\n    endpointsEtcd: {\n      apiVersion: 'v1',\n      kind: 'Endpoints',\n      metadata: {\n        name: 'etcd',\n        namespace: 'kube-system',\n        labels: { 'app.kubernetes.io/name': 'etcd' },\n      },\n      subsets: [{\n        addresses: [\n          { ip: etcdIP }\n          for etcdIP in $.values.etcd.ips\n        ],\n        ports: [\n          { name: 'metrics', port: 2379, protocol: 'TCP' },\n        ],\n      }],\n    },\n    serviceMonitorEtcd: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'ServiceMonitor',\n      metadata: {\n        name: 'etcd',\n        namespace: 'kube-system',\n        labels: {\n          'app.kubernetes.io/name': 'etcd',\n        },\n      },\n      spec: {\n        jobLabel: 'app.kubernetes.io/name',\n        endpoints: [\n          {\n            port: 'metrics',\n            interval: '30s',\n            scheme: 'https',\n            // Prometheus Operator (and Prometheus) allow us to specify a tlsConfig. This is required as most likely your etcd metrics end points is secure.\n            tlsConfig: {\n              caFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client-ca.crt',\n              keyFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.key',\n              certFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.crt',\n              [if $.values.etcd.serverName != null then 'serverName']: $.values.etcd.serverName,\n              [if $.values.etcd.insecureSkipVerify != null then 'insecureSkipVerify']: $.values.etcd.insecureSkipVerify,\n            },\n          },\n        ],\n        selector: {\n          matchLabels: {\n            'app.kubernetes.io/name': 'etcd',\n          },\n        },\n      },\n    },\n    secretEtcdCerts: {\n      // Prometheus Operator allows us to mount secrets in the pod. By loading the secrets as files, they can be made available inside the Prometheus pod.\n      apiVersion: 'v1',\n      kind: 'Secret',\n      type: 'Opaque',\n      metadata: {\n        name: 'kube-etcd-client-certs',\n        namespace: $.values.prometheus.namespace,\n      },\n      data: {\n        'etcd-client-ca.crt': std.base64($.values.etcd.clientCA),\n        'etcd-client.key': std.base64($.values.etcd.clientKey),\n        'etcd-client.crt': std.base64($.values.etcd.clientCert),\n      },\n    },\n    prometheus+: {\n      // Reference info: https://coreos.com/operators/prometheus/docs/latest/api.html#prometheusspec\n      spec+: {\n        secrets+: [$.prometheus.secretEtcdCerts.metadata.name],\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/strip-limits.libsonnet",
    "content": "// Strips spec.containers[].limits for certain containers\n// https://github.com/prometheus-operator/kube-prometheus/issues/72\n\n{\n  //TODO(arthursens): Expand example once kube-rbac-proxy can be managed with a first-class\n  // object inside node-exporter, kube-state-metrics and prometheus-operator.\n  // See also: https://github.com/prometheus-operator/kube-prometheus/issues/1500#issuecomment-966727623\n  values+:: {\n    alertmanager+: {\n      resources+: {\n        limits: {},\n      },\n    },\n\n    blackboxExporter+: {\n      resources+: {\n        limits: {},\n      },\n    },\n\n    grafana+: {\n      resources+: {\n        limits: {},\n      },\n    },\n\n    kubeStateMetrics+: {\n      resources+: {\n        limits: {},\n      },\n    },\n\n    nodeExporter+: {\n      resources+: {\n        limits: {},\n      },\n    },\n\n    prometheusAdapter+: {\n      resources+: {\n        limits: {},\n      },\n    },\n\n    prometheusOperator+: {\n      resources+: {\n        limits: {},\n      },\n    },\n\n    prometheus+: {\n      resources+: {\n        limits: {},\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/user-facing-roles.libsonnet",
    "content": "// user facing roles for monitors, probe, and rules\n// ref: https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles\n{\n  prometheusOperator+: {\n    local po = self,\n    clusterRoleView: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRole',\n      metadata: po._metadata {\n        name: 'monitoring-view',\n        namespace:: null,\n        labels+: {\n          'rbac.authorization.k8s.io/aggregate-to-view': 'true',\n        },\n      },\n      rules: [\n        {\n          apiGroups: [\n            'monitoring.coreos.com',\n          ],\n          resources: [\n            'podmonitors',\n            'probes',\n            'prometheusrules',\n            'servicemonitors',\n          ],\n          verbs: [\n            'get',\n            'list',\n            'watch',\n          ],\n        },\n      ],\n    },\n    clusterRoleEdit: {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'ClusterRole',\n      metadata: po._metadata {\n        name: 'monitoring-edit',\n        namespace:: null,\n        labels+: {\n          'rbac.authorization.k8s.io/aggregate-to-edit': 'true',\n        },\n      },\n      rules: [\n        {\n          apiGroups: [\n            'monitoring.coreos.com',\n          ],\n          resources: [\n            'podmonitors',\n            'probes',\n            'prometheusrules',\n            'servicemonitors',\n          ],\n          verbs: [\n            'create',\n            'delete',\n            'deletecollection',\n            'patch',\n            'update',\n          ],\n        },\n      ],\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/weave-net/alerts.libsonnet",
    "content": "[\n  {\n    alert: 'WeaveNetIPAMSplitBrain',\n    expr: 'max(weave_ipam_unreachable_percentage) - min(weave_ipam_unreachable_percentage) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'Percentage of all IP addresses owned by unreachable peers is not same for every node.',\n      description: 'actionable: Weave Net network has a split brain problem. Please find the problem and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetIPAMUnreachable',\n    expr: 'weave_ipam_unreachable_percentage > 25',\n    'for': '10m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'Percentage of all IP addresses owned by unreachable peers is above threshold.',\n      description: 'actionable: Please find the problem and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetIPAMPendingAllocates',\n    expr: 'sum(weave_ipam_pending_allocates) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'Number of pending allocates is above the threshold.',\n      description: 'actionable: Please find the problem and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetIPAMPendingClaims',\n    expr: 'sum(weave_ipam_pending_claims) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'Number of pending claims is above the threshold.',\n      description: 'actionable: Please find the problem and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetFastDPFlowsLow',\n    expr: 'sum(weave_flows) < 15000',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'Number of FastDP flows is below the threshold.',\n      description: 'actionable: Please find the reason for FastDP flows to go below the threshold and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetFastDPFlowsOff',\n    expr: 'sum(weave_flows == bool 0) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'FastDP flows is zero.',\n      description: 'actionable: Please find the reason for FastDP flows to be off and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetHighConnectionTerminationRate',\n    expr: 'rate(weave_connection_terminations_total[5m]) > 0.1',\n    'for': '5m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'A lot of connections are getting terminated.',\n      description: 'actionable: Please find the reason for the high connection termination rate and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetConnectionsConnecting',\n    expr: 'sum(weave_connections{state=\"connecting\"}) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'A lot of connections are in connecting state.',\n      description: 'actionable: Please find the reason for this and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetConnectionsRetying',\n    expr: 'sum(weave_connections{state=\"retrying\"}) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'A lot of connections are in retrying state.',\n      description: 'actionable: Please find the reason for this and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetConnectionsPending',\n    expr: 'sum(weave_connections{state=\"pending\"}) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'A lot of connections are in pending state.',\n      description: 'actionable: Please find the reason for this and fix it.',\n    },\n  },\n  {\n    alert: 'WeaveNetConnectionsFailed',\n    expr: 'sum(weave_connections{state=\"failed\"}) > 0',\n    'for': '3m',\n    labels: {\n      severity: 'critical',\n    },\n    annotations: {\n      summary: 'A lot of connections are in failed state.',\n      description: 'actionable: Please find the reason and fix it.',\n    },\n  },\n]\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/weave-net/grafana-weave-net-cluster.json",
    "content": "{\n  \"__inputs\": [],\n  \"__requires\": [\n    {\n      \"type\": \"grafana\",\n      \"id\": \"grafana\",\n      \"name\": \"Grafana\",\n      \"version\": \"6.6.0\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"graph\",\n      \"name\": \"Graph\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"datasource\",\n      \"id\": \"prometheus\",\n      \"name\": \"Prometheus\",\n      \"version\": \"1.0.0\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"singlestat\",\n      \"name\": \"Singlestat\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"table\",\n      \"name\": \"Table\",\n      \"version\": \"\"\n    }\n  ],\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"WeaveNet metrics at the cluster level.  It was made on top of the weave-net prometheus metrics. Please check this for more details https://www.weave.works/docs/net/latest/tasks/manage/metrics\",\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": null,\n  \"iteration\": 1582990339310,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 20,\n      \"panels\": [],\n      \"repeat\": null,\n      \"title\": \"Headlines\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorPostfix\": false,\n      \"colorPrefix\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#d44a3a\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#299c46\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"id\": 56,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_flows)\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Fast DP flows\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"#FADE2A\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 4,\n        \"y\": 1\n      },\n      \"id\": 5,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_flows == bool 0)\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,2\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Fast DP off\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 8,\n        \"y\": 1\n      },\n      \"id\": 3,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_ipam_pending_allocates)\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"IPAM Pending Allocates\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 1\n      },\n      \"id\": 4,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_ipam_pending_claims)\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"IPAM Pending Claims\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"cpm\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 1\n      },\n      \"id\": 61,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(increase(weave_connection_terminations_total[1m]))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Terminations\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 1\n      },\n      \"id\": 1,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"count(central_nodeagent:node_route_unhealthy_count)\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"70,80\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Weave Pods\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorPostfix\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#d44a3a\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#5794F2\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 4\n      },\n      \"id\": 57,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"established\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Established\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 4,\n        \"y\": 4\n      },\n      \"id\": 62,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"connecting\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Connecting\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 8,\n        \"y\": 4\n      },\n      \"id\": 59,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"pending\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Pending\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 4\n      },\n      \"id\": 58,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"failed\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Failed\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorPrefix\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 4\n      },\n      \"id\": 60,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"retrying\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Retrying\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 7\n      },\n      \"id\": 21,\n      \"panels\": [],\n      \"repeat\": null,\n      \"title\": \"IPAM\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"Percentage of all IP addresses owned by unreachable peers.\",\n      \"fill\": 0,\n      \"fillGradient\": 9,\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 8\n      },\n      \"hiddenSeries\": false,\n      \"id\": 7,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(weave_ipam_unreachable_percentage, \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"{{node}}\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"IPAM Unreachable Percentage\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"percent\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"Number of unreachable peers that own IPAM addresses.\",\n      \"fill\": 0,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 8\n      },\n      \"hiddenSeries\": false,\n      \"id\": 35,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(weave_ipam_unreachable_count, \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"{{node}}\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"IPAM Unreachable Count\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \" Number of pending claims.\",\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 8\n      },\n      \"hiddenSeries\": false,\n      \"id\": 36,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_ipam_pending_allocates)\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"pending allocates\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        },\n        {\n          \"expr\": \"sum(weave_ipam_pending_claims)\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"pending claims\",\n          \"legendLink\": null,\n          \"refId\": \"B\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"IPAM Pending\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"decimals\": null,\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 13\n      },\n      \"id\": 41,\n      \"panels\": [],\n      \"title\": \"Connections\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 13,\n        \"x\": 0,\n        \"y\": 14\n      },\n      \"hiddenSeries\": false,\n      \"id\": 50,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null as zero\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": true,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(weave_flows, \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"{{node}}\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Fast DP Flows\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 11,\n        \"x\": 13,\n        \"y\": 14\n      },\n      \"hiddenSeries\": false,\n      \"id\": 51,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(rate(weave_connection_terminations_total[5m]), \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\") > 0\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"{{node}}\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Rate of Terminated Connections\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 55,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"established\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"connections established\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Established\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 52,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"connecting\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"connections connecting\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Connecting\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 54,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"pending\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"pending connections\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Pending\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 67,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"retrying\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"retrying connections\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Retrying\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 16,\n        \"x\": 8,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 53,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_connections{state=\\\"failed\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"failed connections\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Failed\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 0,\n        \"y\": 35\n      },\n      \"id\": 46,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 0,\n        \"desc\": true\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"Established\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 0,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort(label_replace(weave_connections{state=\\\"established\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P / Established\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 6,\n        \"y\": 35\n      },\n      \"id\": 63,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 0,\n        \"desc\": true\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"Connecting\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 0,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort(label_replace(weave_connections{state=\\\"connecting\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P / Connecting\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 12,\n        \"y\": 35\n      },\n      \"id\": 64,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 0,\n        \"desc\": true\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"Pending\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 0,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort(label_replace(weave_connections{state=\\\"pending\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P / Pending\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 18,\n        \"y\": 35\n      },\n      \"id\": 65,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 0,\n        \"desc\": true\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"Failed\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 0,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort(label_replace(weave_connections{state=\\\"failed\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P / Failed\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 0,\n        \"y\": 45\n      },\n      \"id\": 66,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 0,\n        \"desc\": true\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"Retrying\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 0,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{state=\\\"retrying\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P / Retrying\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 6,\n        \"y\": 45\n      },\n      \"id\": 44,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 2,\n        \"desc\": false\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"Fast DP Flows\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 2,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_flows, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Fast DP Flows (Current)\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 12,\n        \"y\": 45\n      },\n      \"id\": 45,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 0,\n        \"desc\": true\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"No. of Pods\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 0,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(floor(label_replace(max by(node) (max by(instance) (kubelet_running_pod_count{job=\\\"kubelet\\\",metrics_path=\\\"/metrics\\\"}) * on(instance) group_left(node) kubelet_node_name{job=\\\"kubelet\\\",metrics_path=\\\"/metrics\\\"}) / max by(node) (kube_node_status_capacity{resource=\\\"pods\\\",unit=\\\"integer\\\",job=\\\"kube-state-metrics\\\"}) , \\\"node_ip\\\", \\\"$1.$2.$3.$4\\\", \\\"node\\\", \\\"^ip-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).*$\\\") * 100))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Pods Per Node (Current)\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 18,\n        \"y\": 45\n      },\n      \"id\": 47,\n      \"interval\": \"\",\n      \"options\": {},\n      \"pageSize\": null,\n      \"pluginVersion\": \"6.6.0\",\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 2,\n        \"desc\": false\n      },\n      \"styles\": [\n        {\n          \"alias\": \"Time\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"alias\": \"Node\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"mappingType\": 1,\n          \"pattern\": \"Metric\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        },\n        {\n          \"alias\": \"Terminated\",\n          \"align\": \"left\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 0,\n          \"pattern\": \"Value\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"expr\": \"sort(label_replace(increase(weave_connection_terminations_total[1m]), \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")) != 0\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"legendFormat\": \"{{node_ip}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Peer To Peer Connections Terminated\",\n      \"transform\": \"timeseries_to_rows\",\n      \"type\": \"table\"\n    }\n  ],\n  \"refresh\": \"10s\",\n  \"schemaVersion\": 22,\n  \"style\": \"dark\",\n  \"tags\": [\n    \"practo-managed\"\n  ],\n  \"templating\": {\n    \"list\": [\n      {\n        \"current\": {\n          \"text\": \"prometheus\",\n          \"value\": \"prometheus\"\n        },\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"datasource\",\n        \"options\": [],\n        \"query\": \"prometheus\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"$datasource\",\n        \"definition\": \"\",\n        \"hide\": 2,\n        \"includeAll\": false,\n        \"label\": \"cluster\",\n        \"multi\": false,\n        \"name\": \"cluster\",\n        \"options\": [],\n        \"query\": \"label_values(node_cpu_seconds_total, cluster)\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 2,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"auto\": false,\n        \"auto_count\": 30,\n        \"auto_min\": \"10s\",\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"4h\",\n          \"value\": \"4h\"\n        },\n        \"datasource\": \"$datasource\",\n        \"hide\": 2,\n        \"includeAll\": false,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"interval\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"4h\",\n            \"value\": \"4h\"\n          }\n        ],\n        \"query\": \"4h\",\n        \"refresh\": 2,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 1,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"interval\",\n        \"useTags\": false\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-12h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ],\n    \"time_options\": [\n      \"5m\",\n      \"15m\",\n      \"1h\",\n      \"6h\",\n      \"12h\",\n      \"24h\",\n      \"2d\",\n      \"7d\",\n      \"30d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"WeaveNet (Cluster)\",\n  \"uid\": \"voS3tW_Zk\",\n  \"version\": 9\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/weave-net/grafana-weave-net.json",
    "content": "{\n  \"__inputs\": [],\n  \"__requires\": [\n    {\n      \"type\": \"grafana\",\n      \"id\": \"grafana\",\n      \"name\": \"Grafana\",\n      \"version\": \"6.6.0\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"graph\",\n      \"name\": \"Graph\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"datasource\",\n      \"id\": \"prometheus\",\n      \"name\": \"Prometheus\",\n      \"version\": \"1.0.0\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"singlestat\",\n      \"name\": \"Singlestat\",\n      \"version\": \"\"\n    }\n  ],\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"WeaveNet metrics. It was made on top of the weave-net prometheus metrics. Please check this for more details https://www.weave.works/docs/net/latest/tasks/manage/metrics\",\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": null,\n  \"iteration\": 1582990295515,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 20,\n      \"panels\": [],\n      \"repeat\": null,\n      \"title\": \"Headlines\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#d44a3a\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#299c46\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"id\": 48,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_flows{instance=\\\"$instance\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,50\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Fast DP Flows\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 4,\n        \"y\": 1\n      },\n      \"id\": 3,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_ipam_pending_allocates{instance=\\\"$instance\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"IPAM Pending Allocates\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 8,\n        \"y\": 1\n      },\n      \"id\": 4,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum(weave_ipam_pending_claims{instance=\\\"$instance\\\"})\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"IPAM Pending Claims\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 1\n      },\n      \"id\": 62,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sort(label_replace(weave_max_ips{instance=\\\"$instance\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Max IPs\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"format\": \"cpm\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 1\n      },\n      \"id\": 54,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"increase(weave_connection_terminations_total{instance=\\\"$instance\\\"}[1m])\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,2\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Terminations\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#d44a3a\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#299c46\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 4\n      },\n      \"id\": 50,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"established\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Established\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 4,\n        \"y\": 4\n      },\n      \"id\": 53,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"connecting\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Connecting\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 8,\n        \"y\": 4\n      },\n      \"id\": 52,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"pending\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1,10\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Pending\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 4\n      },\n      \"id\": 51,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"failed\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1, 5\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Failed\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"format\": \"short\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 4\n      },\n      \"id\": 49,\n      \"interval\": null,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"null as zero\",\n      \"nullText\": null,\n      \"options\": {},\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false,\n        \"ymax\": null,\n        \"ymin\": null\n      },\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"retrying\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"instant\": true,\n          \"intervalFactor\": 2,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": \"1, 5\",\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"P2P Retrying\",\n      \"tooltip\": {\n        \"shared\": false,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"avg\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ]\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 7\n      },\n      \"id\": 21,\n      \"panels\": [],\n      \"repeat\": null,\n      \"title\": \"IPAM\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"Percentage of all IP addresses owned by unreachable peers.\",\n      \"fill\": 1,\n      \"fillGradient\": 9,\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 8\n      },\n      \"hiddenSeries\": false,\n      \"id\": 7,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(weave_ipam_unreachable_percentage{instance=\\\"$instance\\\"}, \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"IPAM unreachable percentage\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"IPAM Unreachable Percentage\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"percent\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"Number of unreachable peers that own IPAM addresses.\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 8\n      },\n      \"hiddenSeries\": false,\n      \"id\": 35,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(weave_ipam_unreachable_count{instance=\\\"$instance\\\"}, \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"IPAM unreachable count\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"IPAM Unreachable Count\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \" Number of pending allocates and claims.\",\n      \"fill\": 5,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 8\n      },\n      \"hiddenSeries\": false,\n      \"id\": 34,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [\n        {\n          \"alias\": \"pending allocates\",\n          \"color\": \"#FF9830\"\n        },\n        {\n          \"alias\": \"pending claims\",\n          \"color\": \"#F2495C\"\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": true,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(weave_ipam_pending_allocates{instance=\\\"$instance\\\"}, \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"pending allocates\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        },\n        {\n          \"expr\": \"label_replace(weave_ipam_pending_claims{instance=\\\"$instance\\\"}, \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"legendFormat\": \"pending claims\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"IPAM Pending\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 13\n      },\n      \"id\": 41,\n      \"panels\": [],\n      \"title\": \"Connections\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"https://github.com/weaveworks/weave/blob/master/site/concepts/fastdp-how-it-works.md\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 13,\n        \"x\": 0,\n        \"y\": 14\n      },\n      \"hiddenSeries\": false,\n      \"id\": 55,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(weave_flows{instance=\\\"$instance\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"weave fast dp flows\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Fast DP Flows\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"https://weave-community.slack.com/archives/C2ND76PAA/p1582641797016700?thread_ts=1582613239.010900&cid=C2ND76PAA\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 11,\n        \"x\": 13,\n        \"y\": 14\n      },\n      \"hiddenSeries\": false,\n      \"id\": 56,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"label_replace(increase(weave_connection_terminations_total{instance=\\\"$instance\\\"}[1m]), \\\"node\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\")\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"rate of terminated connections\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Rate of Terminated Connections\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"cpm\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 59,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"established\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"connections established\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Established\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 57,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"connecting\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"connections connecting\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Connecting\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 58,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"pending\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"connections pending\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Pending\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 61,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"retrying\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"retrying connections\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Retrying\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"$datasource\",\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 4,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 16,\n        \"x\": 8,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 60,\n      \"legend\": {\n        \"alignAsTable\": false,\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": false,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sort_desc(label_replace(weave_connections{instance=\\\"$instance\\\", state=\\\"failed\\\"}, \\\"node_ip\\\", \\\"$1\\\", \\\"instance\\\", \\\"(.*):.*\\\"))\",\n          \"format\": \"time_series\",\n          \"hide\": false,\n          \"intervalFactor\": 2,\n          \"legendFormat\": \"failed connections\",\n          \"legendLink\": null,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P2P / Failed\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    }\n  ],\n  \"refresh\": \"10s\",\n  \"schemaVersion\": 22,\n  \"style\": \"dark\",\n  \"tags\": [\n    \"practo-managed\"\n  ],\n  \"templating\": {\n    \"list\": [\n      {\n        \"current\": {\n          \"text\": \"prometheus\",\n          \"value\": \"prometheus\"\n        },\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"datasource\",\n        \"options\": [],\n        \"query\": \"prometheus\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"$datasource\",\n        \"definition\": \"\",\n        \"hide\": 2,\n        \"includeAll\": false,\n        \"label\": \"cluster\",\n        \"multi\": false,\n        \"name\": \"cluster\",\n        \"options\": [],\n        \"query\": \"label_values(node_cpu_seconds_total, cluster)\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 2,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"auto\": false,\n        \"auto_count\": 30,\n        \"auto_min\": \"10s\",\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"4h\",\n          \"value\": \"4h\"\n        },\n        \"datasource\": \"$datasource\",\n        \"hide\": 2,\n        \"includeAll\": false,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"interval\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"4h\",\n            \"value\": \"4h\"\n          }\n        ],\n        \"query\": \"4h\",\n        \"refresh\": 2,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 1,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"interval\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"$datasource\",\n        \"definition\": \"label_values(weave_ipam_unreachable_percentage, instance)\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"instance\",\n        \"multi\": false,\n        \"name\": \"instance\",\n        \"options\": [],\n        \"query\": \"label_values(weave_ipam_unreachable_percentage, instance)\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-1h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ],\n    \"time_options\": [\n      \"5m\",\n      \"15m\",\n      \"1h\",\n      \"6h\",\n      \"12h\",\n      \"24h\",\n      \"2d\",\n      \"7d\",\n      \"30d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"WeaveNet\",\n  \"uid\": \"GzIXGqwZz\",\n  \"version\": 5\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/weave-net/weave-net.libsonnet",
    "content": "{\n  prometheus+: {\n    local p = self,\n    serviceWeaveNet: {\n      apiVersion: 'v1',\n      kind: 'Service',\n      metadata: {\n        name: 'weave-net',\n        namespace: 'kube-system',\n        labels: { 'app.kubernetes.io/name': 'weave-net' },\n      },\n      spec: {\n        ports: [\n          { name: 'weave-net-metrics', targetPort: 6782, port: 6782 },\n        ],\n        selector: { name: 'weave-net' },\n        clusterIP: 'None',\n      },\n    },\n    serviceMonitorWeaveNet: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'ServiceMonitor',\n      metadata: {\n        name: 'weave-net',\n        labels: {\n          'app.kubernetes.io/name': 'weave-net',\n        },\n        namespace: 'monitoring',\n      },\n      spec: {\n        jobLabel: 'app.kubernetes.io/name',\n        endpoints: [\n          {\n            port: 'weave-net-metrics',\n            path: '/metrics',\n            interval: '15s',\n          },\n        ],\n        namespaceSelector: {\n          matchNames: [\n            'kube-system',\n          ],\n        },\n        selector: {\n          matchLabels: {\n            'app.kubernetes.io/name': 'weave-net',\n          },\n        },\n      },\n    },\n    prometheusRuleWeaveNet: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        labels: p._config.mixin.ruleLabels,\n        name: 'weave-net-rules',\n        namespace: p._config.namespace,\n      },\n      spec: {\n        groups: [{\n          name: 'weave-net',\n          rules: (import './alerts.libsonnet'),\n        }],\n      },\n    },\n    mixin+:: {\n      grafanaDashboards+:: {\n        'weave-net.json': (import './grafana-weave-net.json'),\n        'weave-net-cluster.json': (import './grafana-weave-net-cluster.json'),\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/windows-hostprocess.libsonnet",
    "content": "local windowsdashboards = import 'github.com/kubernetes-monitoring/kubernetes-mixin/dashboards/windows.libsonnet';\nlocal windowsrules = import 'github.com/kubernetes-monitoring/kubernetes-mixin/rules/windows.libsonnet';\n\nlocal defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  name:: 'windows-exporter',\n  namespace:: error 'must provide namespace',\n  version:: error 'must provide version',\n  image:: error 'must provide image',\n  resources:: {\n    requests: { cpu: '300m', memory: '200Mi' },\n    limits: { memory: '200Mi' },\n  },\n  collectorsEnabled:: 'cpu,logical_disk,net,os,system,container,memory',\n  scrapeTimeout:: '15s',\n  interval:: '30s',\n  listenAddress:: '127.0.0.1',\n  port:: 9182,\n  commonLabels:: {\n    'app.kubernetes.io/name': defaults.name,\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'windows-exporter',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n};\n\nlocal windowsExporter = function(params) {\n  local we = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(we._config.resources),\n  _metadata:: {\n    name: we._config.name,\n    namespace: we._config.namespace,\n    labels: we._config.commonLabels,\n  },\n\n  daemonset: {\n    apiVersion: 'apps/v1',\n    kind: 'DaemonSet',\n    metadata: we._metadata,\n    spec: {\n      selector: {\n        matchLabels: we._config.selectorLabels,\n      },\n      updateStrategy: {\n        type: 'RollingUpdate',\n        rollingUpdate: { maxUnavailable: '10%' },\n      },\n      template: {\n        metadata: we._metadata,\n        spec: {\n          securityContext: {\n            windowsOptions: {\n              hostProcess: true,\n              runAsUserName: 'NT AUTHORITY\\\\system',\n            },\n          },\n          hostNetwork: true,\n          initContainers: [\n            {\n              name: 'configure-firewall',\n              image: 'mcr.microsoft.com/powershell:nanoserver-lts',\n              resources: we._config.resources,\n              command: [\n                'powershell',\n              ],\n              args: [\n                'New-NetFirewallRule',\n                '-DisplayName',\n                \"'windows-exporter'\",\n                '-Direction',\n                'inbound',\n                '-Profile',\n                'Any',\n                '-Action',\n                'Allow',\n                '-LocalPort',\n                std.toString(we._config.port),\n                '-Protocol',\n                'TCP',\n              ],\n            },\n          ],\n          containers: [\n            {\n              args: [\n                '--config.file=%CONTAINER_SANDBOX_MOUNT_POINT%/config.yml',\n                '--collector.textfile.directories=%CONTAINER_SANDBOX_MOUNT_POINT%',\n              ],\n              name: we._config.name,\n              image: we._config.image + ':' + we._config.version,\n              imagePullPolicy: 'Always',\n              resources: we._config.resources,\n              ports: [\n                {\n                  containerPort: we._config.port,\n                  hostPort: we._config.port,\n                  name: 'http',\n                },\n              ],\n              volumeMounts: [\n                {\n                  name: 'windows-exporter-config',\n                  mountPath: '/config.yml',\n                  subPath: 'config.yml',\n                },\n              ],\n            },\n          ],\n          nodeSelector: {\n            'kubernetes.io/os': 'windows',\n          },\n          tolerations: [\n            {\n              key: 'os',\n              operator: 'Equal',\n              value: 'windows',\n              effect: 'NoSchedule',\n            },\n          ],\n          volumes: [\n            {\n              name: 'windows-exporter-config',\n              configMap: {\n                name: we._config.name,\n              },\n            },\n          ],\n        },\n      },\n    },\n  },\n  configmap: {\n    kind: 'ConfigMap',\n    apiVersion: 'v1',\n    metadata: we._metadata,\n    data: {\n      'config.yml': \"collectors:\\n  enabled: '\" + we._config.collectorsEnabled + \"'\",\n    },\n  },\n  podmonitor: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PodMonitor',\n    metadata: we._metadata,\n    spec: {\n      jobLabel: 'app.kubernetes.io/name',\n      selector: {\n        matchLabels: we._config.selectorLabels,\n      },\n      podMetricsEndpoints: [\n        {\n          port: 'http',\n          scheme: 'http',\n          scrapeTimeout: we._config.scrapeTimeout,\n          interval: we._config.interval,\n          relabelings: [\n            {\n              action: 'replace',\n              regex: '(.*)',\n              replacement: '$1',\n              sourceLabels: ['__meta_kubernetes_pod_node_name'],\n              targetLabel: 'instance',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\n\n{\n  values+:: {\n    windowsExporter+: {\n      name: defaults.name,\n      namespace: $.values.common.namespace,\n    },\n    grafana+:: {\n      dashboards+:: windowsdashboards {\n        _config: $.kubernetesControlPlane.mixin._config {\n          windowsExporterSelector: 'job=\"' + $.values.windowsExporter.name + '\"',\n        },\n      }.grafanaDashboards,\n    },\n  },\n  kubernetesControlPlane+: {\n    mixin+:: {\n      prometheusRules+:: {\n        groups+: windowsrules {\n          _config: $.kubernetesControlPlane.mixin._config {\n            windowsExporterSelector: 'job=\"' + $.values.windowsExporter.name + '\"',\n          },\n        }.prometheusRules.groups,\n      },\n    },\n  },\n  windowsExporter: windowsExporter($.values.windowsExporter),\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/addons/windows.libsonnet",
    "content": "local windowsdashboards = import 'github.com/kubernetes-monitoring/kubernetes-mixin/dashboards/windows.libsonnet';\nlocal windowsrules = import 'github.com/kubernetes-monitoring/kubernetes-mixin/rules/windows.libsonnet';\n\n{\n  values+:: {\n    // This needs to follow prometheus naming convention and not prometheus-operator one\n    windowsScrapeConfig+:: {\n      job_name: 'windows-exporter',\n      static_configs: [\n        {\n          targets: [error 'must provide targets array'],\n        },\n      ],\n      relabel_configs: [\n        {\n          action: 'replace',\n          regex: '(.*)',\n          replacement: '$1',\n          source_labels: [\n            '__meta_kubernetes_endpoint_address_target_name',\n          ],\n          target_label: 'instance',\n        },\n      ],\n    },\n\n    grafana+:: {\n      dashboards+:: windowsdashboards {\n        _config: $.kubernetesControlPlane.mixin._config {\n          wmiExporterSelector: 'job=\"' + $.values.windowsScrapeConfig.job_name + '\"',\n        },\n      }.grafanaDashboards,\n    },\n  },\n  kubernetesControlPlane+: {\n    mixin+:: {\n      prometheusRules+:: {\n        groups+: windowsrules {\n          _config: $.kubernetesControlPlane.mixin._config {\n            wmiExporterSelector: 'job=\"' + $.values.windowsScrapeConfig.job_name + '\"',\n          },\n        }.prometheusRules.groups,\n      },\n    },\n  },\n  prometheus+: {\n    local p = self,\n    local sc = [$.values.windowsScrapeConfig],\n    prometheus+: {\n      spec+: {\n        additionalScrapeConfigs: {\n          name: 'prometheus-' + p._config.name + '-additional-scrape-config',\n          key: 'prometheus-additional.yaml',\n        },\n      },\n\n    },\n    windowsConfig: {\n      apiVersion: 'v1',\n      kind: 'Secret',\n      metadata: {\n        name: 'prometheus-' + p._config.name + '-additional-scrape-config',\n        namespace: p._config.namespace,\n      },\n      stringData: {\n        'prometheus-additional.yaml': std.manifestYamlDoc(sc),\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/alertmanager.libsonnet",
    "content": "local defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  namespace:: error 'must provide namespace',\n  image: error 'must provide image',\n  version: error 'must provide version',\n  resources: {\n    limits: { cpu: '100m', memory: '100Mi' },\n    requests: { cpu: '4m', memory: '100Mi' },\n  },\n  commonLabels:: {\n    'app.kubernetes.io/name': 'alertmanager',\n    'app.kubernetes.io/instance': defaults.name,\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'alert-router',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  name:: error 'must provide name',\n  reloaderPort:: 8080,\n  config:: {\n    global: {\n      resolve_timeout: '5m',\n    },\n    inhibit_rules: [{\n      source_matchers: ['severity = critical'],\n      target_matchers: ['severity =~ warning|info'],\n      equal: ['namespace', 'alertname'],\n    }, {\n      source_matchers: ['severity = warning'],\n      target_matchers: ['severity = info'],\n      equal: ['namespace', 'alertname'],\n    }, {\n      source_matchers: ['alertname = InfoInhibitor'],\n      target_matchers: ['severity = info'],\n      equal: ['namespace'],\n    }],\n    route: {\n      group_by: ['namespace'],\n      group_wait: '30s',\n      group_interval: '5m',\n      repeat_interval: '12h',\n      receiver: 'Default',\n      routes: [\n        { receiver: 'Watchdog', matchers: ['alertname = Watchdog'] },\n        { receiver: 'null', matchers: ['alertname = InfoInhibitor'] },\n        { receiver: 'Critical', matchers: ['severity = critical'] },\n      ],\n    },\n    receivers: [\n      { name: 'Default' },\n      { name: 'Watchdog' },\n      { name: 'Critical' },\n      { name: 'null' },\n    ],\n  },\n  replicas: 3,\n  secrets: [],\n  alertmanagerConfigSelector: {},\n  mixin:: {\n    ruleLabels: {},\n    _config: {\n      alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',\n      alertmanagerClusterLabels: 'namespace,service',\n      alertmanagerSelector: 'job=\"alertmanager-' + defaults.name + '\",container=\"alertmanager\"' + ',namespace=\"' + defaults.namespace + '\"',\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/alertmanager/%s',\n    },\n  },\n};\n\n\nfunction(params) {\n  local am = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(am._config.resources),\n  assert std.isObject(am._config.mixin._config),\n  _metadata:: {\n    name: 'alertmanager-' + am._config.name,\n    namespace: am._config.namespace,\n    labels: am._config.commonLabels,\n  },\n\n  mixin:: (import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') +\n          (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') {\n            _config+:: am._config.mixin._config,\n          },\n\n  prometheusRule: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: am._metadata {\n      labels+: am._config.mixin.ruleLabels,\n      name: am._metadata.name + '-rules',\n    },\n    spec: {\n      local r = if std.objectHasAll(am.mixin, 'prometheusRules') then am.mixin.prometheusRules.groups else [],\n      local a = if std.objectHasAll(am.mixin, 'prometheusAlerts') then am.mixin.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n\n  networkPolicy: {\n    apiVersion: 'networking.k8s.io/v1',\n    kind: 'NetworkPolicy',\n    metadata: am.service.metadata,\n    spec: {\n      podSelector: {\n        matchLabels: am._config.selectorLabels,\n      },\n      policyTypes: ['Egress', 'Ingress'],\n      egress: [{}],\n      ingress: [\n        {\n          from: [{\n            podSelector: {\n              matchLabels: {\n                'app.kubernetes.io/name': 'prometheus',\n              },\n            },\n          }],\n          ports: std.map(function(o) {\n            port: o.port,\n            protocol: 'TCP',\n          }, am.service.spec.ports),\n        },\n        // Alertmanager cluster peer-to-peer communication\n        {\n          from: [{\n            podSelector: {\n              matchLabels: {\n                'app.kubernetes.io/name': 'alertmanager',\n              },\n            },\n          }],\n          ports: [{\n            port: 9094,\n            protocol: 'TCP',\n          }, {\n            port: 9094,\n            protocol: 'UDP',\n          }],\n        },\n      ],\n    },\n  },\n\n  secret: {\n    apiVersion: 'v1',\n    kind: 'Secret',\n    type: 'Opaque',\n    metadata: am._metadata,\n    stringData: {\n      'alertmanager.yaml': if std.type(am._config.config) == 'object'\n      then\n        std.manifestYamlDoc(am._config.config)\n      else\n        am._config.config,\n    },\n  },\n\n  serviceAccount: {\n    apiVersion: 'v1',\n    kind: 'ServiceAccount',\n    metadata: am._metadata,\n    automountServiceAccountToken: false,\n  },\n\n  service: {\n    apiVersion: 'v1',\n    kind: 'Service',\n    metadata: am._metadata,\n    spec: {\n      ports: [\n        { name: 'web', targetPort: 'web', port: 9093 },\n        { name: 'reloader-web', port: am._config.reloaderPort, targetPort: 'reloader-web' },\n      ],\n      selector: am._config.selectorLabels,\n      sessionAffinity: 'ClientIP',\n    },\n  },\n\n  serviceMonitor: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: am._metadata,\n    spec: {\n      selector: {\n        matchLabels: am._config.selectorLabels,\n      },\n      endpoints: [\n        { port: 'web', interval: '30s' },\n        { port: 'reloader-web', interval: '30s' },\n      ],\n    },\n  },\n\n  [if (defaults + params).replicas > 1 then 'podDisruptionBudget']: {\n    apiVersion: 'policy/v1',\n    kind: 'PodDisruptionBudget',\n    metadata: am._metadata,\n    spec: {\n      maxUnavailable: 1,\n      selector: {\n        matchLabels: am._config.selectorLabels,\n      },\n    },\n  },\n\n  alertmanager: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'Alertmanager',\n    metadata: am._metadata {\n      name: am._config.name,\n    },\n    spec: {\n      replicas: am._config.replicas,\n      version: am._config.version,\n      image: am._config.image,\n      podMetadata: {\n        labels: am.alertmanager.metadata.labels,\n      },\n      resources: am._config.resources,\n      nodeSelector: { 'kubernetes.io/os': 'linux' },\n      secrets: am._config.secrets,\n      serviceAccountName: am.serviceAccount.metadata.name,\n      securityContext: {\n        runAsUser: 1000,\n        runAsNonRoot: true,\n        fsGroup: 2000,\n      },\n      [if std.objectHas(params, 'storage') then 'storage']: am._config.storage,\n      alertmanagerConfigSelector: am._config.alertmanagerConfigSelector,\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet",
    "content": "local krp = import './kube-rbac-proxy.libsonnet';\n\nlocal defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  namespace:: error 'must provide namespace',\n  version:: error 'must provide version',\n  image:: error 'must provide image',\n  resources:: {\n    requests: { cpu: '10m', memory: '20Mi' },\n    limits: { cpu: '20m', memory: '40Mi' },\n  },\n  kubeRbacProxy:: {\n    resources+: {\n      requests: { cpu: '10m', memory: '20Mi' },\n      limits: { cpu: '20m', memory: '40Mi' },\n    },\n  },\n  commonLabels:: {\n    'app.kubernetes.io/name': 'blackbox-exporter',\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'exporter',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  configmapReloaderImage:: error 'must provide configmapReloaderImage',\n  kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',\n\n  port:: 9115,\n  internalPort:: 19115,\n  replicas:: 1,\n  modules:: {\n    http_2xx: {\n      prober: 'http',\n      http: {\n        preferred_ip_protocol: 'ip4',\n      },\n    },\n    http_post_2xx: {\n      prober: 'http',\n      http: {\n        method: 'POST',\n        preferred_ip_protocol: 'ip4',\n      },\n    },\n    tcp_connect: {\n      prober: 'tcp',\n      tcp: {\n        preferred_ip_protocol: 'ip4',\n      },\n    },\n    pop3s_banner: {\n      prober: 'tcp',\n      tcp: {\n        query_response: [\n          { expect: '^+OK' },\n        ],\n        tls: true,\n        tls_config: {\n          insecure_skip_verify: false,\n        },\n        preferred_ip_protocol: 'ip4',\n      },\n    },\n    ssh_banner: {\n      prober: 'tcp',\n      tcp: {\n        query_response: [\n          { expect: '^SSH-2.0-' },\n        ],\n        preferred_ip_protocol: 'ip4',\n      },\n    },\n    irc_banner: {\n      prober: 'tcp',\n      tcp: {\n        query_response: [\n          { send: 'NICK prober' },\n          { send: 'USER prober prober prober :prober' },\n          { expect: 'PING :([^ ]+)', send: 'PONG ${1}' },\n          { expect: '^:[^ ]+ 001' },\n        ],\n        preferred_ip_protocol: 'ip4',\n      },\n    },\n  },\n  privileged::\n    local icmpModules = [self.modules[m] for m in std.objectFields(self.modules) if self.modules[m].prober == 'icmp'];\n    std.length(icmpModules) > 0,\n};\n\n\nfunction(params) {\n  local bb = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(bb._config.resources),\n  _metadata:: {\n    name: 'blackbox-exporter',\n    namespace: bb._config.namespace,\n    labels: bb._config.commonLabels,\n  },\n\n  configuration: {\n    apiVersion: 'v1',\n    kind: 'ConfigMap',\n    metadata: bb._metadata {\n      name: 'blackbox-exporter-configuration',\n    },\n    data: {\n      'config.yml': std.manifestYamlDoc({ modules: bb._config.modules }),\n    },\n  },\n\n  serviceAccount: {\n    apiVersion: 'v1',\n    kind: 'ServiceAccount',\n    metadata: bb._metadata,\n    automountServiceAccountToken: false,\n  },\n\n  clusterRole: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRole',\n    metadata: {\n      name: 'blackbox-exporter',\n      labels: bb._config.commonLabels,\n    },\n    rules: [\n      {\n        apiGroups: ['authentication.k8s.io'],\n        resources: ['tokenreviews'],\n        verbs: ['create'],\n      },\n      {\n        apiGroups: ['authorization.k8s.io'],\n        resources: ['subjectaccessreviews'],\n        verbs: ['create'],\n      },\n    ],\n  },\n\n  clusterRoleBinding: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRoleBinding',\n    metadata: {\n      name: 'blackbox-exporter',\n      labels: bb._config.commonLabels,\n    },\n    roleRef: {\n      apiGroup: 'rbac.authorization.k8s.io',\n      kind: 'ClusterRole',\n      name: 'blackbox-exporter',\n    },\n    subjects: [{\n      kind: 'ServiceAccount',\n      name: 'blackbox-exporter',\n      namespace: bb._config.namespace,\n    }],\n  },\n\n  deployment:\n    local blackboxExporter = {\n      name: 'blackbox-exporter',\n      image: bb._config.image,\n      args: [\n        '--config.file=/etc/blackbox_exporter/config.yml',\n        '--web.listen-address=:%d' % bb._config.internalPort,\n      ],\n      ports: [{\n        name: 'http',\n        containerPort: bb._config.internalPort,\n      }],\n      resources: bb._config.resources,\n      securityContext: if bb._config.privileged then {\n        runAsNonRoot: false,\n        capabilities: { drop: ['ALL'], add: ['NET_RAW'] },\n        readOnlyRootFilesystem: true,\n      } else {\n        runAsNonRoot: true,\n        runAsUser: 65534,\n        runAsGroup: 65534,\n        allowPrivilegeEscalation: false,\n        readOnlyRootFilesystem: true,\n        capabilities: { drop: ['ALL'] },\n      },\n      volumeMounts: [{\n        mountPath: '/etc/blackbox_exporter/',\n        name: 'config',\n        readOnly: true,\n      }],\n    };\n\n    local reloader = {\n      name: 'module-configmap-reloader',\n      image: bb._config.configmapReloaderImage,\n      args: [\n        '--webhook-url=http://localhost:%d/-/reload' % bb._config.internalPort,\n        '--volume-dir=/etc/blackbox_exporter/',\n      ],\n      resources: bb._config.resources,\n      securityContext: {\n        runAsNonRoot: true,\n        runAsUser: 65534,\n        runAsGroup: 65534,\n        allowPrivilegeEscalation: false,\n        readOnlyRootFilesystem: true,\n        capabilities: { drop: ['ALL'] },\n      },\n      terminationMessagePath: '/dev/termination-log',\n      terminationMessagePolicy: 'FallbackToLogsOnError',\n      volumeMounts: [{\n        mountPath: '/etc/blackbox_exporter/',\n        name: 'config',\n        readOnly: true,\n      }],\n    };\n\n    local kubeRbacProxy = krp(bb._config.kubeRbacProxy {\n      name: 'kube-rbac-proxy',\n      upstream: 'http://127.0.0.1:' + bb._config.internalPort + '/',\n      resources: bb._config.resources,\n      secureListenAddress: ':' + bb._config.port,\n      ports: [\n        { name: 'https', containerPort: bb._config.port },\n      ],\n      image: bb._config.kubeRbacProxyImage,\n    });\n\n    {\n      apiVersion: 'apps/v1',\n      kind: 'Deployment',\n      metadata: bb._metadata,\n      spec: {\n        replicas: bb._config.replicas,\n        selector: {\n          matchLabels: bb._config.selectorLabels,\n        },\n        template: {\n          metadata: {\n            labels: bb._config.commonLabels,\n            annotations: {\n              'kubectl.kubernetes.io/default-container': blackboxExporter.name,\n            },\n          },\n          spec: {\n            containers: [blackboxExporter, reloader, kubeRbacProxy],\n            nodeSelector: { 'kubernetes.io/os': 'linux' },\n            automountServiceAccountToken: true,\n            serviceAccountName: 'blackbox-exporter',\n            volumes: [{\n              name: 'config',\n              configMap: { name: 'blackbox-exporter-configuration' },\n            }],\n          },\n        },\n      },\n    },\n\n  networkPolicy: {\n    apiVersion: 'networking.k8s.io/v1',\n    kind: 'NetworkPolicy',\n    metadata: bb.service.metadata,\n    spec: {\n      podSelector: {\n        matchLabels: bb._config.selectorLabels,\n      },\n      policyTypes: ['Egress', 'Ingress'],\n      egress: [{}],\n      ingress: [{\n        from: [{\n          podSelector: {\n            matchLabels: {\n              'app.kubernetes.io/name': 'prometheus',\n            },\n          },\n        }],\n        ports: std.map(function(o) {\n          port: o.port,\n          protocol: 'TCP',\n        }, bb.service.spec.ports),\n      }],\n    },\n  },\n\n  service: {\n    apiVersion: 'v1',\n    kind: 'Service',\n    metadata: bb._metadata,\n    spec: {\n      ports: [{\n        name: 'https',\n        port: bb._config.port,\n        targetPort: 'https',\n      }, {\n        name: 'probe',\n        port: bb._config.internalPort,\n        targetPort: 'http',\n      }],\n      selector: bb._config.selectorLabels,\n    },\n  },\n\n  serviceMonitor: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: bb._metadata,\n    spec: {\n      endpoints: [{\n        bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n        interval: '30s',\n        path: '/metrics',\n        port: 'https',\n        scheme: 'https',\n        tlsConfig: {\n          insecureSkipVerify: true,\n        },\n      }],\n      selector: {\n        matchLabels: bb._config.selectorLabels,\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/grafana.libsonnet",
    "content": "local kubernetesGrafana = import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet';\n\nlocal defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  name:: 'grafana',\n  namespace:: error 'must provide namespace',\n  version:: error 'must provide version',\n  image:: error 'must provide image',\n  resources:: {\n    requests: { cpu: '100m', memory: '100Mi' },\n    limits: { cpu: '200m', memory: '200Mi' },\n  },\n  commonLabels:: {\n    'app.kubernetes.io/name': defaults.name,\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'grafana',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  prometheusName:: error 'must provide prometheus name',\n  mixin: {\n    ruleLabels: {},\n    _config: {\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/grafana/%s',\n    },\n  },\n};\n\nfunction(params)\n  local config = defaults + params;\n  // Safety check\n  assert std.isObject(config.resources);\n\n  kubernetesGrafana(config) {\n    local g = self,\n    _config+:: config,\n    _metadata:: {\n      name: 'grafana',\n      namespace: g._config.namespace,\n      labels: g._config.commonLabels,\n    },\n\n    mixin::\n      (import 'github.com/grafana/grafana/grafana-mixin/mixin.libsonnet') +\n      (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') + {\n        _config+:: g._config.mixin._config,\n      },\n\n    prometheusRule: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        labels: g._config.commonLabels + g._config.mixin.ruleLabels,\n        name: g._config.name + '-rules',\n        namespace: g._config.namespace,\n      },\n      spec: {\n        local r = if std.objectHasAll(g.mixin, 'prometheusRules') then g.mixin.prometheusRules.groups else [],\n        local a = if std.objectHasAll(g.mixin, 'prometheusAlerts') then g.mixin.prometheusAlerts.groups else [],\n        groups: a + r,\n      },\n    },\n\n    serviceMonitor: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'ServiceMonitor',\n      metadata: g._metadata,\n      spec: {\n        selector: {\n          matchLabels: {\n            'app.kubernetes.io/name': 'grafana',\n          },\n        },\n        endpoints: [{\n          port: 'http',\n          interval: '15s',\n        }],\n      },\n    },\n\n    networkPolicy: {\n      apiVersion: 'networking.k8s.io/v1',\n      kind: 'NetworkPolicy',\n      metadata: g.service.metadata,\n      spec: {\n        podSelector: {\n          matchLabels: g._config.selectorLabels,\n        },\n        policyTypes: ['Egress', 'Ingress'],\n        egress: [{}],\n        ingress: [{\n          from: [{\n            podSelector: {\n              matchLabels: {\n                'app.kubernetes.io/name': 'prometheus',\n              },\n            },\n          }],\n          ports: std.map(function(o) {\n            port: o.port,\n            protocol: 'TCP',\n          }, g.service.spec.ports),\n        }],\n      },\n    },\n\n    // FIXME(paulfantom): `automountServiceAccountToken` can be removed after porting to brancz/kuberentes-grafana\n    deployment+: {\n      spec+: {\n        template+: {\n          spec+: {\n            automountServiceAccountToken: false,\n            securityContext+: {\n              runAsGroup: 65534,\n            },\n          },\n        },\n      },\n    },\n  }\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet",
    "content": "local relabelings = import '../addons/dropping-deprecated-metrics-relabelings.libsonnet';\n\nlocal defaults = {\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  namespace:: error 'must provide namespace',\n  commonLabels:: {\n    'app.kubernetes.io/name': 'kube-prometheus',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n    'app.kubernetes.io/component': 'kubernetes',\n  },\n  mixin:: {\n    ruleLabels: {},\n    _config: {\n      showMultiCluster: true,\n      cadvisorSelector: 'job=\"kubelet\", metrics_path=\"/metrics/cadvisor\"',\n      kubeletSelector: 'job=\"kubelet\", metrics_path=\"/metrics\"',\n      kubeStateMetricsSelector: 'job=\"kube-state-metrics\"',\n      nodeExporterSelector: 'job=\"node-exporter\"',\n      kubeSchedulerSelector: 'job=\"kube-scheduler\"',\n      kubeControllerManagerSelector: 'job=\"kube-controller-manager\"',\n      kubeApiserverSelector: 'job=\"apiserver\"',\n      podLabel: 'pod',\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/kubernetes/%s',\n      diskDeviceSelector: 'device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"',\n      hostNetworkInterfaceSelector: 'device!~\"veth.+\"',\n    },\n  },\n  kubeProxy:: false,\n};\n\nfunction(params) {\n  local k8s = self,\n  _config:: defaults + params,\n  _metadata:: {\n    labels: k8s._config.commonLabels,\n    namespace: k8s._config.namespace,\n  },\n\n  mixin:: (import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') {\n    _config+:: k8s._config.mixin._config,\n  } + {\n    // Filter-out alerts related to kube-proxy when `kubeProxy: false`\n    [if !(defaults + params).kubeProxy then 'prometheusAlerts']+:: {\n      groups: std.filter(\n        function(g) !std.member(['kubernetes-system-kube-proxy'], g.name),\n        super.groups\n      ),\n    },\n  },\n\n  prometheusRule: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: k8s._metadata {\n      name: 'kubernetes-monitoring-rules',\n      labels+: k8s._config.mixin.ruleLabels,\n    },\n    spec: {\n      local r = if std.objectHasAll(k8s.mixin, 'prometheusRules') then k8s.mixin.prometheusRules.groups else [],\n      local a = if std.objectHasAll(k8s.mixin, 'prometheusAlerts') then k8s.mixin.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n\n  serviceMonitorKubeScheduler: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: k8s._metadata {\n      name: 'kube-scheduler',\n      labels+: { 'app.kubernetes.io/name': 'kube-scheduler' },\n    },\n    spec: {\n      jobLabel: 'app.kubernetes.io/name',\n      endpoints: [\n        {\n          port: 'https-metrics',\n          interval: '30s',\n          scheme: 'https',\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          tlsConfig: { insecureSkipVerify: true },\n        },\n        {\n          port: 'https-metrics',\n          interval: '5s',\n          scheme: 'https',\n          path: '/metrics/slis',\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          tlsConfig: { insecureSkipVerify: true },\n          metricRelabelings: [\n            {\n              sourceLabels: ['__name__'],\n              regex: 'process_start_time_seconds',\n              action: 'drop',\n            },\n          ],\n        },\n      ],\n      selector: {\n        matchLabels: { 'app.kubernetes.io/name': 'kube-scheduler' },\n      },\n      namespaceSelector: {\n        matchNames: ['kube-system'],\n      },\n    },\n  },\n\n  serviceMonitorKubelet: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: k8s._metadata {\n      name: 'kubelet',\n      labels+: { 'app.kubernetes.io/name': 'kubelet' },\n    },\n    spec: {\n      jobLabel: 'app.kubernetes.io/name',\n      endpoints: [\n        {\n          port: 'https-metrics',\n          scheme: 'https',\n          interval: '30s',\n          honorLabels: true,\n          tlsConfig: { insecureSkipVerify: true },\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          metricRelabelings: relabelings,\n          relabelings: [{\n            action: 'replace',\n            sourceLabels: ['__metrics_path__'],\n            targetLabel: 'metrics_path',\n          }],\n        },\n        {\n          port: 'https-metrics',\n          scheme: 'https',\n          path: '/metrics/cadvisor',\n          interval: '30s',\n          honorLabels: true,\n          honorTimestamps: false,\n          tlsConfig: {\n            insecureSkipVerify: true,\n          },\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          relabelings: [{\n            action: 'replace',\n            sourceLabels: ['__metrics_path__'],\n            targetLabel: 'metrics_path',\n          }],\n          metricRelabelings: [\n            // Drop a bunch of metrics which are disabled but still sent, see\n            // https://github.com/google/cadvisor/issues/1925.\n            {\n              sourceLabels: ['__name__'],\n              regex: 'container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)',\n              action: 'drop',\n            },\n            // Drop cAdvisor metrics with no (pod, namespace) labels while preserving ability to monitor system services resource usage (cardinality estimation)\n            {\n              sourceLabels: ['__name__', 'pod', 'namespace'],\n              action: 'drop',\n              regex: '(' + std.join('|',\n                                    [\n                                      'container_spec_.*',  // everything related to cgroup specification and thus static data (nodes*services*5)\n                                      'container_file_descriptors',  // file descriptors limits and global numbers are exposed via (nodes*services)\n                                      'container_sockets',  // used sockets in cgroup. Usually not important for system services (nodes*services)\n                                      'container_threads_max',  // max number of threads in cgroup. Usually for system services it is not limited (nodes*services)\n                                      'container_threads',  // used threads in cgroup. Usually not important for system services (nodes*services)\n                                      'container_start_time_seconds',  // container start. Possibly not needed for system services (nodes*services)\n                                      'container_last_seen',  // not needed as system services are always running (nodes*services)\n                                    ]) + ');;',\n            },\n            {\n              sourceLabels: ['__name__', 'container'],\n              action: 'drop',\n              regex: '(' + std.join('|',\n                                    [\n                                      'container_blkio_device_usage_total',\n                                    ]) + ');.+',\n            },\n          ],\n        },\n        {\n          port: 'https-metrics',\n          scheme: 'https',\n          path: '/metrics/probes',\n          interval: '30s',\n          honorLabels: true,\n          tlsConfig: { insecureSkipVerify: true },\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          relabelings: [{\n            action: 'replace',\n            sourceLabels: ['__metrics_path__'],\n            targetLabel: 'metrics_path',\n          }],\n        },\n        {\n          port: 'https-metrics',\n          scheme: 'https',\n          path: '/metrics/slis',\n          interval: '5s',\n          honorLabels: true,\n          tlsConfig: { insecureSkipVerify: true },\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          relabelings: [\n            {\n              action: 'replace',\n              sourceLabels: ['__metrics_path__'],\n              targetLabel: 'metrics_path',\n            },\n          ],\n          metricRelabelings: [\n            {\n              sourceLabels: ['__name__'],\n              regex: 'process_start_time_seconds',\n              action: 'drop',\n            },\n          ],\n        },\n      ],\n      selector: {\n        matchLabels: { 'app.kubernetes.io/name': 'kubelet' },\n      },\n      namespaceSelector: {\n        matchNames: ['kube-system'],\n      },\n    },\n  },\n\n  serviceMonitorKubeControllerManager: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: k8s._metadata {\n      name: 'kube-controller-manager',\n      labels+: { 'app.kubernetes.io/name': 'kube-controller-manager' },\n    },\n    spec: {\n      jobLabel: 'app.kubernetes.io/name',\n      endpoints: [\n        {\n          port: 'https-metrics',\n          interval: '30s',\n          scheme: 'https',\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          tlsConfig: {\n            insecureSkipVerify: true,\n          },\n          metricRelabelings: relabelings + [\n            {\n              sourceLabels: ['__name__'],\n              regex: 'etcd_(debugging|disk|request|server).*',\n              action: 'drop',\n            },\n          ],\n        },\n        {\n          port: 'https-metrics',\n          interval: '5s',\n          scheme: 'https',\n          path: '/metrics/slis',\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          tlsConfig: {\n            insecureSkipVerify: true,\n          },\n          metricRelabelings: [\n            {\n              sourceLabels: ['__name__'],\n              regex: 'process_start_time_seconds',\n              action: 'drop',\n            },\n          ],\n        },\n      ],\n      selector: {\n        matchLabels: { 'app.kubernetes.io/name': 'kube-controller-manager' },\n      },\n      namespaceSelector: {\n        matchNames: ['kube-system'],\n      },\n    },\n  },\n\n  serviceMonitorApiserver: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: k8s._metadata {\n      name: 'kube-apiserver',\n      labels+: { 'app.kubernetes.io/name': 'apiserver' },\n    },\n    spec: {\n      jobLabel: 'component',\n      selector: {\n        matchLabels: {\n          component: 'apiserver',\n          provider: 'kubernetes',\n        },\n      },\n      namespaceSelector: {\n        matchNames: ['default'],\n      },\n      endpoints: [\n        {\n          port: 'https',\n          interval: '30s',\n          scheme: 'https',\n          tlsConfig: {\n            caFile: '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt',\n            serverName: 'kubernetes',\n          },\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          metricRelabelings: relabelings + [\n            {\n              sourceLabels: ['__name__'],\n              regex: 'etcd_(debugging|disk|server).*',\n              action: 'drop',\n            },\n            {\n              sourceLabels: ['__name__'],\n              regex: 'apiserver_admission_controller_admission_latencies_seconds_.*',\n              action: 'drop',\n            },\n            {\n              sourceLabels: ['__name__'],\n              regex: 'apiserver_admission_step_admission_latencies_seconds_.*',\n              action: 'drop',\n            },\n            {\n              sourceLabels: ['__name__', 'le'],\n              regex: '(apiserver_request|apiserver_request_sli|etcd_request)_duration_seconds_bucket;(0.15|0.25|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2.5|3|3.5|4.5|6|7|8|9|15|25|30|50)',\n              action: 'drop',\n            },\n            {\n              sourceLabels: ['__name__', 'le'],\n              regex: 'apiserver_request_body_size_bytes_bucket;(150000|350000|550000|650000|850000|950000|(1\\\\.15|1\\\\.35|1\\\\.55|1\\\\.65|1\\\\.85|1\\\\.95|2\\\\.15|2\\\\.35|2\\\\.55|2\\\\.65|2\\\\.85|2\\\\.95)e\\\\+06)',\n              action: 'drop',\n            },\n          ],\n        },\n        {\n          port: 'https',\n          interval: '5s',\n          scheme: 'https',\n          path: '/metrics/slis',\n          tlsConfig: {\n            caFile: '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt',\n            serverName: 'kubernetes',\n          },\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          metricRelabelings: [\n            {\n              sourceLabels: ['__name__'],\n              regex: 'process_start_time_seconds',\n              action: 'drop',\n            },\n          ],\n        },\n      ],\n    },\n  },\n\n  [if (defaults + params).kubeProxy then 'podMonitorKubeProxy']: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PodMonitor',\n    metadata: k8s._metadata {\n      labels+: { 'k8s-app': 'kube-proxy' },\n      name: 'kube-proxy',\n    },\n    spec: {\n      jobLabel: 'k8s-app',\n      namespaceSelector: {\n        matchNames: [\n          'kube-system',\n        ],\n      },\n      selector: {\n        matchLabels: {\n          'k8s-app': 'kube-proxy',\n        },\n      },\n      podMetricsEndpoints: [{\n        honorLabels: true,\n        relabelings: [\n          {\n            action: 'replace',\n            regex: '(.*)',\n            replacement: '$1',\n            sourceLabels: ['__meta_kubernetes_pod_node_name'],\n            targetLabel: 'instance',\n          },\n          {\n            action: 'replace',\n            regex: '(.*)',\n            replacement: '$1:10249',\n            targetLabel: '__address__',\n            sourceLabels: ['__meta_kubernetes_pod_ip'],\n          },\n        ],\n      }],\n    },\n  },\n\n\n  serviceMonitorCoreDNS: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: k8s._metadata {\n      name: 'coredns',\n      labels+: { 'app.kubernetes.io/name': 'coredns' },\n    },\n    spec: {\n      jobLabel: 'app.kubernetes.io/name',\n      selector: {\n        matchLabels: { 'k8s-app': 'kube-dns' },\n      },\n      namespaceSelector: {\n        matchNames: ['kube-system'],\n      },\n      endpoints: [\n        {\n          port: 'metrics',\n          interval: '15s',\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          metricRelabelings: [\n            // Drop deprecated metrics\n            // TODO (pgough) - consolidate how we drop metrics across the project\n            {\n              sourceLabels: ['__name__'],\n              regex: 'coredns_cache_misses_total',\n              action: 'drop',\n            },\n          ],\n        },\n      ],\n    },\n  },\n\n\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/kube-rbac-proxy.libsonnet",
    "content": "local defaults = {\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  namespace:: error 'must provide namespace',\n  image:: error 'must provide image',\n  ports:: error 'must provide ports',\n  secureListenAddress:: error 'must provide secureListenAddress',\n  upstream:: error 'must provide upstream',\n  resources:: {\n    requests: { cpu: '10m', memory: '20Mi' },\n    limits: { cpu: '20m', memory: '40Mi' },\n  },\n  tlsCipherSuites:: [\n    'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',  // required by h2: http://golang.org/cl/30721\n    'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',  // required by h2: http://golang.org/cl/30721\n\n    // 'TLS_RSA_WITH_RC4_128_SHA',                // insecure: https://access.redhat.com/security/cve/cve-2013-2566\n    // 'TLS_RSA_WITH_3DES_EDE_CBC_SHA',           // insecure: https://access.redhat.com/articles/2548661\n    // 'TLS_RSA_WITH_AES_128_CBC_SHA',            // disabled by h2\n    // 'TLS_RSA_WITH_AES_256_CBC_SHA',            // disabled by h2\n    // 'TLS_RSA_WITH_AES_128_CBC_SHA256',         // insecure: https://access.redhat.com/security/cve/cve-2013-0169\n    // 'TLS_RSA_WITH_AES_128_GCM_SHA256',         // disabled by h2\n    // 'TLS_RSA_WITH_AES_256_GCM_SHA384',         // disabled by h2\n    // 'TLS_ECDHE_ECDSA_WITH_RC4_128_SHA',        // insecure: https://access.redhat.com/security/cve/cve-2013-2566\n    // 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA',    // disabled by h2\n    // 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA',    // disabled by h2\n    // 'TLS_ECDHE_RSA_WITH_RC4_128_SHA',          // insecure: https://access.redhat.com/security/cve/cve-2013-2566\n    // 'TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA',     // insecure: https://access.redhat.com/articles/2548661\n    // 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA',      // disabled by h2\n    // 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA',      // disabled by h2\n    // 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256', // insecure: https://access.redhat.com/security/cve/cve-2013-0169\n    // 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256',   // insecure: https://access.redhat.com/security/cve/cve-2013-0169\n\n    // disabled by h2 means: https://github.com/golang/net/blob/e514e69ffb8bc3c76a71ae40de0118d794855992/http2/ciphers.go\n\n    'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',\n    'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',\n    'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305',\n    'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305',\n  ],\n};\n\n\nfunction(params) {\n  local krp = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(krp._config.resources),\n\n  name: krp._config.name,\n  image: krp._config.image,\n  args: [\n    '--secure-listen-address=' + krp._config.secureListenAddress,\n    '--tls-cipher-suites=' + std.join(',', krp._config.tlsCipherSuites),\n    '--upstream=' + krp._config.upstream,\n  ],\n  resources: krp._config.resources,\n  ports: krp._config.ports,\n  securityContext: {\n    runAsUser: 65532,\n    runAsGroup: 65532,\n    runAsNonRoot: true,\n    allowPrivilegeEscalation: false,\n    readOnlyRootFilesystem: true,\n    capabilities: { drop: ['ALL'] },\n    seccompProfile: { type: 'RuntimeDefault' },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet",
    "content": "local krp = import './kube-rbac-proxy.libsonnet';\n\nlocal defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  name:: 'kube-state-metrics',\n  namespace:: error 'must provide namespace',\n  version:: error 'must provide version',\n  image:: error 'must provide image',\n  kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',\n  resources:: {\n    requests: { cpu: '10m', memory: '190Mi' },\n    limits: { cpu: '100m', memory: '250Mi' },\n  },\n\n  kubeRbacProxyMain:: {\n    resources+: {\n      limits+: { cpu: '40m' },\n      requests+: { cpu: '20m' },\n    },\n  },\n  kubeRbacProxySelf:: {\n    resources+: {\n      limits+: { cpu: '20m' },\n      requests+: { cpu: '10m' },\n    },\n  },\n  scrapeInterval:: '30s',\n  scrapeTimeout:: '30s',\n  commonLabels:: {\n    'app.kubernetes.io/name': defaults.name,\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'exporter',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  mixin:: {\n    ruleLabels: {},\n    _config: {\n      kubeStateMetricsSelector: 'job=\"' + defaults.name + '\"',\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/%s',\n    },\n  },\n};\n\nfunction(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics/kube-state-metrics.libsonnet') {\n  local ksm = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(ksm._config.resources),\n  assert std.isObject(ksm._config.mixin._config),\n\n  name:: ksm._config.name,\n  namespace:: ksm._config.namespace,\n  version:: ksm._config.version,\n  image:: ksm._config.image,\n  commonLabels:: ksm._config.commonLabels,\n  podLabels:: ksm._config.selectorLabels,\n\n  _metadata:: {\n    labels: ksm._config.commonLabels,\n    name: ksm._config.name,\n    namespace: ksm._config.namespace,\n  },\n\n  mixin:: (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics-mixin/mixin.libsonnet') +\n          (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') {\n            _config+:: ksm._config.mixin._config,\n          },\n\n  prometheusRule: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: ksm._metadata {\n      labels+: ksm._config.mixin.ruleLabels,\n      name: ksm._config.name + '-rules',\n    },\n    spec: {\n      local r = if std.objectHasAll(ksm.mixin, 'prometheusRules') then ksm.mixin.prometheusRules.groups else [],\n      local a = if std.objectHasAll(ksm.mixin, 'prometheusAlerts') then ksm.mixin.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n\n  service+: {\n    spec+: {\n      ports: [\n        {\n          name: 'https-main',\n          port: 8443,\n          targetPort: 'https-main',\n        },\n        {\n          name: 'https-self',\n          port: 9443,\n          targetPort: 'https-self',\n        },\n      ],\n    },\n  },\n\n  local kubeRbacProxyMain = krp(ksm._config.kubeRbacProxyMain {\n    name: 'kube-rbac-proxy-main',\n    upstream: 'http://127.0.0.1:8081/',\n    secureListenAddress: ':8443',\n    ports: [\n      { name: 'https-main', containerPort: 8443 },\n    ],\n    image: ksm._config.kubeRbacProxyImage,\n  }),\n\n  local kubeRbacProxySelf = krp(ksm._config.kubeRbacProxySelf {\n    name: 'kube-rbac-proxy-self',\n    upstream: 'http://127.0.0.1:8082/',\n    secureListenAddress: ':9443',\n    ports: [\n      { name: 'https-self', containerPort: 9443 },\n    ],\n    image: ksm._config.kubeRbacProxyImage,\n  }),\n\n  networkPolicy: {\n    apiVersion: 'networking.k8s.io/v1',\n    kind: 'NetworkPolicy',\n    metadata: ksm.service.metadata,\n    spec: {\n      podSelector: {\n        matchLabels: ksm._config.selectorLabels,\n      },\n      policyTypes: ['Egress', 'Ingress'],\n      egress: [{}],\n      ingress: [{\n        from: [{\n          podSelector: {\n            matchLabels: {\n              'app.kubernetes.io/name': 'prometheus',\n            },\n          },\n        }],\n        ports: std.map(function(o) {\n          port: o.port,\n          protocol: 'TCP',\n        }, ksm.service.spec.ports),\n      }],\n    },\n  },\n\n  deployment+: {\n    spec+: {\n      template+: {\n        metadata+: {\n          annotations+: {\n            'kubectl.kubernetes.io/default-container': 'kube-state-metrics',\n          },\n        },\n        spec+: {\n          automountServiceAccountToken: true,\n          containers: std.map(function(c) c {\n            ports:: null,\n            livenessProbe:: null,\n            readinessProbe:: null,\n            securityContext+: {\n              runAsGroup: 65534,\n            },\n            args: ['--host=127.0.0.1', '--port=8081', '--telemetry-host=127.0.0.1', '--telemetry-port=8082'],\n            resources: ksm._config.resources,\n          }, super.containers) + [kubeRbacProxyMain, kubeRbacProxySelf],\n        },\n      },\n    },\n  },\n  serviceMonitor:\n    {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'ServiceMonitor',\n      metadata: ksm._metadata,\n      spec: {\n        jobLabel: 'app.kubernetes.io/name',\n        selector: {\n          matchLabels: ksm._config.selectorLabels,\n        },\n        endpoints: [\n          {\n            port: 'https-main',\n            scheme: 'https',\n            interval: ksm._config.scrapeInterval,\n            scrapeTimeout: ksm._config.scrapeTimeout,\n            honorLabels: true,\n            bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n            relabelings: [\n              {\n                regex: '(pod|service|endpoint|namespace)',\n                action: 'labeldrop',\n              },\n            ],\n            metricRelabelings: [\n              {\n                // Dropping metric deprecated from kube-state-metrics 2.6.0 & 2.14.0 versions\n                sourceLabels: ['__name__'],\n                regex: 'kube_(endpoint_(address_not_ready|address_available|ports))',\n                action: 'drop',\n              },\n            ],\n            tlsConfig: {\n              insecureSkipVerify: true,\n            },\n          },\n          {\n            port: 'https-self',\n            scheme: 'https',\n            interval: ksm._config.scrapeInterval,\n            bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n            tlsConfig: {\n              insecureSkipVerify: true,\n            },\n          },\n        ],\n      },\n    },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/mixin/alerts/alerts.libsonnet",
    "content": "(import 'general.libsonnet') +\n(import 'node.libsonnet')\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/mixin/alerts/general.libsonnet",
    "content": "{\n  prometheusAlerts+:: {\n    groups+: [\n      {\n        name: 'general.rules',\n        rules: [\n          {\n            alert: 'TargetDown',\n            annotations: {\n              summary: 'One or more targets are unreachable.',\n              description: '{{ printf \"%.4g\" $value }}% of the {{ $labels.job }}/{{ $labels.service }} targets in {{ $labels.namespace }} namespace are down.',\n            },\n            expr: '100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up) BY (cluster, job, namespace, service)) > 10',\n            'for': '10m',\n            labels: {\n              severity: 'warning',\n            },\n          },\n          {\n            alert: 'Watchdog',\n            annotations: {\n              summary: 'An alert that should always be firing to certify that Alertmanager is working properly.',\n              description: |||\n                This is an alert meant to ensure that the entire alerting pipeline is functional.\n                This alert is always firing, therefore it should always be firing in Alertmanager\n                and always fire against a receiver. There are integrations with various notification\n                mechanisms that send a notification when this alert is not firing. For example the\n                \"DeadMansSnitch\" integration in PagerDuty.\n              |||,\n            },\n            expr: 'vector(1)',\n            labels: {\n              severity: 'none',\n            },\n          },\n          {\n            alert: 'InfoInhibitor',\n            annotations: {\n              summary: 'Info-level alert inhibition.',\n              description: |||\n                This is an alert that is used to inhibit info alerts.\n                By themselves, the info-level alerts are sometimes very noisy, but they are relevant when combined with\n                other alerts.\n                This alert fires whenever there's a severity=\"info\" alert, and stops firing when another alert with a\n                severity of 'warning' or 'critical' starts firing on the same namespace.\n                This alert should be routed to a null receiver and configured to inhibit alerts with severity=\"info\".\n              |||,\n            },\n            expr: 'group by (namespace) (ALERTS{severity = \"info\"} == 1) unless on (namespace) group by (namespace) (ALERTS{alertname != \"InfoInhibitor\", alertstate = \"firing\", severity =~ \"warning|critical\"} == 1)',\n            labels: {\n              severity: 'none',\n            },\n          },\n        ],\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/mixin/alerts/node.libsonnet",
    "content": "{\n  prometheusAlerts+:: {\n    groups+: [\n      {\n        name: 'node-network',\n        rules: [\n          {\n            alert: 'NodeNetworkInterfaceFlapping',\n            annotations: {\n              summary: 'Network interface is often changing its status',\n              description: 'Network interface \"{{ $labels.device }}\" changing its up status often on node-exporter {{ $labels.namespace }}/{{ $labels.pod }}',\n            },\n            expr: |||\n              changes(node_network_up{%(nodeExporterSelector)s,%(hostNetworkInterfaceSelector)s}[2m]) > 2\n            ||| % $._config,\n            'for': '2m',\n            labels: {\n              severity: 'warning',\n            },\n          },\n        ],\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/mixin/custom.libsonnet",
    "content": "local defaults = {\n  name: 'kube-prometheus',\n  namespace: error 'must provide namespace',\n  commonLabels:: {\n    'app.kubernetes.io/name': 'kube-prometheus',\n    'app.kubernetes.io/component': 'exporter',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  mixin: {\n    ruleLabels: {},\n    _config: {\n      nodeExporterSelector: 'job=\"node-exporter\"',\n      hostNetworkInterfaceSelector: 'device!~\"veth.+\"',\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/general/%s',\n    },\n  },\n};\n\nfunction(params) {\n  local m = self,\n  _config:: defaults + params,\n\n  local alertsandrules = (import './alerts/alerts.libsonnet') + (import './rules/rules.libsonnet'),\n\n  mixin:: alertsandrules +\n          (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') {\n            _config+:: m._config.mixin._config,\n          },\n\n  prometheusRule: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: {\n      labels: m._config.commonLabels + m._config.mixin.ruleLabels,\n      name: m._config.name + '-rules',\n      namespace: m._config.namespace,\n    },\n    spec: {\n      local r = if std.objectHasAll(m.mixin, 'prometheusRules') then m.mixin.prometheusRules.groups else [],\n      local a = if std.objectHasAll(m.mixin, 'prometheusAlerts') then m.mixin.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/mixin/rules/general.libsonnet",
    "content": "{\n  prometheusRules+:: {\n    groups+: [\n      {\n        name: 'kube-prometheus-general.rules',\n        rules: [\n          {\n            expr: 'count without(instance, pod, node) (up == 1)',\n            record: 'count:up1',\n          },\n          {\n            expr: 'count without(instance, pod, node) (up == 0)',\n            record: 'count:up0',\n          },\n        ],\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/mixin/rules/node-rules.libsonnet",
    "content": "{\n  prometheusRules+:: {\n    groups+: [\n      {\n        name: 'kube-prometheus-node-recording.rules',\n        rules: [\n          {\n            expr: 'sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[3m])) BY (instance)',\n            record: 'instance:node_cpu:rate:sum',\n          },\n          {\n            expr: 'sum(rate(node_network_receive_bytes_total[3m])) BY (instance)',\n            record: 'instance:node_network_receive_bytes:rate:sum',\n          },\n          {\n            expr: 'sum(rate(node_network_transmit_bytes_total[3m])) BY (instance)',\n            record: 'instance:node_network_transmit_bytes:rate:sum',\n          },\n          {\n            expr: 'sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance)',\n            record: 'instance:node_cpu:ratio',\n          },\n          {\n            expr: 'sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m]))',\n            record: 'cluster:node_cpu:sum_rate5m',\n          },\n          {\n            expr: 'cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu))',\n            record: 'cluster:node_cpu:ratio',\n          },\n        ],\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/mixin/rules/rules.libsonnet",
    "content": "(import 'node-rules.libsonnet') +\n(import 'general.libsonnet')\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/node-exporter.libsonnet",
    "content": "local krp = import './kube-rbac-proxy.libsonnet';\n\nlocal defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  name:: 'node-exporter',\n  namespace:: error 'must provide namespace',\n  version:: error 'must provide version',\n  image:: error 'must provide image',\n  kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',\n  resources:: {\n    requests: { cpu: '102m', memory: '180Mi' },\n    limits: { cpu: '250m', memory: '180Mi' },\n  },\n  kubeRbacProxy:: {\n    resources+: {\n      requests: { cpu: '10m', memory: '20Mi' },\n      limits: { cpu: '20m', memory: '40Mi' },\n    },\n  },\n  listenAddress:: '127.0.0.1',\n  filesystemMountPointsExclude:: '^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)',\n  // NOTE: ignore veth network interface associated with containers.\n  // OVN renames veth.* to <rand-hex>@if<X> where X is /sys/class/net/<if>/ifindex\n  // thus [a-z0-9] regex below\n  ignoredNetworkDevices:: '^(veth.*|[a-f0-9]{15})$',\n  port:: 9100,\n  internal_port:: 9101,\n  commonLabels:: {\n    'app.kubernetes.io/name': defaults.name,\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'exporter',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  mixin:: {\n    ruleLabels: {},\n    _config: {\n      nodeExporterSelector: 'job=\"' + defaults.name + '\"',\n      // Adjust NodeFilesystemSpaceFillingUp warning and critical thresholds according to the following default kubelet\n      // GC values,\n      // imageGCLowThresholdPercent: 80\n      // imageGCHighThresholdPercent: 85\n      // GC kicks in when imageGCHighThresholdPercent is hit and attempts to free upto imageGCLowThresholdPercent.\n      // See https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/ for more details.\n      // Warn only after imageGCHighThresholdPercent is hit, but filesystem is not freed up for a prolonged duration.\n      fsSpaceFillingUpWarningThreshold: 15,\n      // Send critical alert only after (imageGCHighThresholdPercent + 5) is hit, but filesystem is not freed up for a prolonged duration.\n      fsSpaceFillingUpCriticalThreshold: 10,\n      diskDeviceSelector: 'device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"',\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/node/%s',\n    },\n  },\n};\n\n\nfunction(params) {\n  local ne = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(ne._config.resources),\n  assert std.isObject(ne._config.mixin._config),\n  _metadata:: {\n    name: ne._config.name,\n    namespace: ne._config.namespace,\n    labels: ne._config.commonLabels,\n  },\n\n  mixin:: (import 'github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet') +\n          (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') {\n            _config+:: ne._config.mixin._config,\n          },\n\n  prometheusRule: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: ne._metadata {\n      labels+: ne._config.mixin.ruleLabels,\n      name: ne._config.name + '-rules',\n    },\n    spec: {\n      local r = if std.objectHasAll(ne.mixin, 'prometheusRules') then ne.mixin.prometheusRules.groups else [],\n      local a = if std.objectHasAll(ne.mixin, 'prometheusAlerts') then ne.mixin.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n\n  clusterRoleBinding: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRoleBinding',\n    metadata: {\n      name: ne._config.name,\n      labels: ne._config.commonLabels,\n    },\n    roleRef: {\n      apiGroup: 'rbac.authorization.k8s.io',\n      kind: 'ClusterRole',\n      name: ne._config.name,\n    },\n    subjects: [{\n      kind: 'ServiceAccount',\n      name: ne._config.name,\n      namespace: ne._config.namespace,\n    }],\n  },\n\n  clusterRole: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRole',\n    metadata: {\n      name: ne._config.name,\n      labels: ne._config.commonLabels,\n    },\n    rules: [\n      {\n        apiGroups: ['authentication.k8s.io'],\n        resources: ['tokenreviews'],\n        verbs: ['create'],\n      },\n      {\n        apiGroups: ['authorization.k8s.io'],\n        resources: ['subjectaccessreviews'],\n        verbs: ['create'],\n      },\n    ],\n  },\n\n  serviceAccount: {\n    apiVersion: 'v1',\n    kind: 'ServiceAccount',\n    metadata: ne._metadata,\n    automountServiceAccountToken: false,\n  },\n\n  service: {\n    apiVersion: 'v1',\n    kind: 'Service',\n    metadata: ne._metadata,\n    spec: {\n      ports: [\n        { name: 'https', targetPort: 'https', port: ne._config.port },\n      ],\n      selector: ne._config.selectorLabels,\n      clusterIP: 'None',\n    },\n  },\n\n  serviceMonitor: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: ne._metadata,\n    spec: {\n      jobLabel: 'app.kubernetes.io/name',\n      selector: {\n        matchLabels: ne._config.selectorLabels,\n      },\n      endpoints: [{\n        port: 'https',\n        scheme: 'https',\n        interval: '15s',\n        bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n        relabelings: [\n          {\n            action: 'replace',\n            regex: '(.*)',\n            replacement: '$1',\n            sourceLabels: ['__meta_kubernetes_pod_node_name'],\n            targetLabel: 'instance',\n          },\n        ],\n        tlsConfig: {\n          insecureSkipVerify: true,\n        },\n      }],\n    },\n  },\n\n  networkPolicy: {\n    apiVersion: 'networking.k8s.io/v1',\n    kind: 'NetworkPolicy',\n    metadata: ne.service.metadata,\n    spec: {\n      podSelector: {\n        matchLabels: ne._config.selectorLabels,\n      },\n      policyTypes: ['Egress', 'Ingress'],\n      egress: [{}],\n      ingress: [{\n        from: [{\n          podSelector: {\n            matchLabels: {\n              'app.kubernetes.io/name': 'prometheus',\n            },\n          },\n        }],\n        ports: std.map(function(o) {\n          port: o.port,\n          protocol: 'TCP',\n        }, ne.service.spec.ports),\n      }],\n    },\n  },\n\n  daemonset:\n    local nodeExporter = {\n      name: ne._config.name,\n      image: ne._config.image,\n      args: [\n        '--web.listen-address=' + std.join(':', [ne._config.listenAddress, std.toString(ne._config.internal_port)]),\n        '--path.sysfs=/host/sys',\n        '--path.rootfs=/host/root',\n        '--path.procfs=/host/root/proc',\n        '--path.udev.data=/host/root/run/udev/data',\n        '--no-collector.wifi',\n        '--no-collector.hwmon',\n        '--no-collector.btrfs',\n        '--collector.filesystem.mount-points-exclude=' + ne._config.filesystemMountPointsExclude,\n        '--collector.netclass.ignored-devices=' + ne._config.ignoredNetworkDevices,\n        '--collector.netdev.device-exclude=' + ne._config.ignoredNetworkDevices,\n      ],\n      volumeMounts: [\n        { name: 'sys', mountPath: '/host/sys', mountPropagation: 'HostToContainer', readOnly: true },\n        { name: 'root', mountPath: '/host/root', mountPropagation: 'HostToContainer', readOnly: true },\n      ],\n      resources: ne._config.resources,\n      securityContext: {\n        allowPrivilegeEscalation: false,\n        readOnlyRootFilesystem: true,\n        capabilities: { drop: ['ALL'], add: ['SYS_TIME'] },\n      },\n    };\n\n    local kubeRbacProxy = krp(ne._config.kubeRbacProxy {\n      name: 'kube-rbac-proxy',\n      //image: krpImage,\n      upstream: 'http://127.0.0.1:' + ne._config.internal_port + '/',\n      secureListenAddress: '[$(IP)]:' + ne._config.port,\n      // Keep `hostPort` here, rather than in the node-exporter container\n      // because Kubernetes mandates that if you define a `hostPort` then\n      // `containerPort` must match. In our case, we are splitting the\n      // host port and container port between the two containers.\n      // We'll keep the port specification here so that the named port\n      // used by the service is tied to the proxy container. We *could*\n      // forgo declaring the host port, however it is important to declare\n      // it so that the scheduler can decide if the pod is schedulable.\n      //\n      // Although hostPort might not seem necessary, kubernetes adds it anyway\n      // when running with 'hostNetwork'. We might as well make sure it works\n      // the way we want.\n      //\n      // See also: https://github.com/kubernetes/kubernetes/blob/1945829906546caf867992669a0bfa588edf8be6/pkg/apis/core/v1/defaults.go#L402-L411\n      ports: [\n        { name: 'https', containerPort: ne._config.port, hostPort: ne._config.port },\n      ],\n      image: ne._config.kubeRbacProxyImage,\n    }) + {\n      env: [\n        { name: 'IP', valueFrom: { fieldRef: { fieldPath: 'status.podIP' } } },\n      ],\n    };\n\n    {\n      apiVersion: 'apps/v1',\n      kind: 'DaemonSet',\n      metadata: ne._metadata,\n      spec: {\n        selector: {\n          matchLabels: ne._config.selectorLabels,\n        },\n        updateStrategy: {\n          type: 'RollingUpdate',\n          rollingUpdate: { maxUnavailable: '10%' },\n        },\n        template: {\n          metadata: {\n            annotations: {\n              'kubectl.kubernetes.io/default-container': nodeExporter.name,\n            },\n            labels: ne._config.commonLabels,\n          },\n          spec: {\n            nodeSelector: { 'kubernetes.io/os': 'linux' },\n            tolerations: [{\n              operator: 'Exists',\n            }],\n            containers: [nodeExporter, kubeRbacProxy],\n            volumes: [\n              { name: 'sys', hostPath: { path: '/sys' } },\n              { name: 'root', hostPath: { path: '/' } },\n            ],\n            automountServiceAccountToken: true,\n            serviceAccountName: ne._config.name,\n            priorityClassName: 'system-cluster-critical',\n            securityContext: {\n              runAsGroup: 65534,\n              runAsUser: 65534,\n              runAsNonRoot: true,\n            },\n            hostPID: true,\n            hostNetwork: true,\n          },\n        },\n      },\n    },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet",
    "content": "local defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  name:: 'prometheus-adapter',\n  namespace:: error 'must provide namespace',\n  version:: error 'must provide version',\n  image: error 'must provide image',\n  resources:: {\n    requests: { cpu: '102m', memory: '180Mi' },\n    limits: { cpu: '250m', memory: '180Mi' },\n  },\n  replicas:: 2,\n  listenAddress:: '127.0.0.1',\n  port:: 9100,\n  commonLabels:: {\n    'app.kubernetes.io/name': 'prometheus-adapter',\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'metrics-adapter',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  // Default range intervals are equal to 4 times the default scrape interval.\n  // This is done in order to follow Prometheus rule of thumb with irate().\n  rangeIntervals:: {\n    kubelet: '4m',\n    nodeExporter: '4m',\n    windowsExporter: '4m',\n  },\n  containerMetricsPrefix:: '',\n\n  prometheusURL:: error 'must provide prometheusURL',\n  containerQuerySelector:: '',\n  nodeQuerySelector:: '',\n  config:: {\n    local containerSelector = if $.containerQuerySelector != '' then ',' + $.containerQuerySelector else '',\n    local nodeSelector = if $.nodeQuerySelector != '' then ',' + $.nodeQuerySelector else '',\n    resourceRules: {\n      cpu: {\n        containerQuery: |||\n          sum by (<<.GroupBy>>) (\n            irate (\n                %(containerMetricsPrefix)scontainer_cpu_usage_seconds_total{<<.LabelMatchers>>,container!=\"\",pod!=\"\"%(addtionalSelector)s}[%(kubelet)s]\n            )\n          )\n        ||| % { kubelet: $.rangeIntervals.kubelet, containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: containerSelector },\n        nodeQuery: |||\n          sum by (<<.GroupBy>>) (\n            1 - irate(\n              node_cpu_seconds_total{mode=\"idle\"%(addtionalSelector)s}[%(nodeExporter)s]\n            )\n            * on(namespace, pod) group_left(node) (\n              node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}\n            )\n          )\n          or sum by (<<.GroupBy>>) (\n            1 - irate(\n              windows_cpu_time_total{mode=\"idle\", job=\"windows-exporter\",<<.LabelMatchers>>%(addtionalSelector)s}[%(windowsExporter)s]\n            )\n          )\n        ||| % { nodeExporter: $.rangeIntervals.nodeExporter, windowsExporter: $.rangeIntervals.windowsExporter, containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: nodeSelector },\n        resources: {\n          overrides: {\n            node: { resource: 'node' },\n            namespace: { resource: 'namespace' },\n            pod: { resource: 'pod' },\n          },\n        },\n        containerLabel: 'container',\n      },\n      memory: {\n        containerQuery: |||\n          sum by (<<.GroupBy>>) (\n            %(containerMetricsPrefix)scontainer_memory_working_set_bytes{<<.LabelMatchers>>,container!=\"\",pod!=\"\"%(addtionalSelector)s}\n          )\n        ||| % { containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: containerSelector },\n        nodeQuery: |||\n          sum by (<<.GroupBy>>) (\n            node_memory_MemTotal_bytes{job=\"node-exporter\",<<.LabelMatchers>>%(addtionalSelector)s}\n            -\n            node_memory_MemAvailable_bytes{job=\"node-exporter\",<<.LabelMatchers>>%(addtionalSelector)s}\n          )\n          or sum by (<<.GroupBy>>) (\n            windows_cs_physical_memory_bytes{job=\"windows-exporter\",<<.LabelMatchers>>%(addtionalSelector)s}\n            -\n            windows_memory_available_bytes{job=\"windows-exporter\",<<.LabelMatchers>>%(addtionalSelector)s}\n          )\n        ||| % { containerMetricsPrefix: $.containerMetricsPrefix, addtionalSelector: nodeSelector },\n        resources: {\n          overrides: {\n            instance: { resource: 'node' },\n            namespace: { resource: 'namespace' },\n            pod: { resource: 'pod' },\n          },\n        },\n        containerLabel: 'container',\n      },\n      window: '5m',\n    },\n  },\n  tlsCipherSuites:: [\n    'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305',\n    'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305',\n    'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',\n    'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',\n    'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',\n    'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',\n    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA',\n    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',\n    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA',\n    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA',\n    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA',\n    'TLS_RSA_WITH_AES_128_GCM_SHA256',\n    'TLS_RSA_WITH_AES_256_GCM_SHA384',\n    'TLS_RSA_WITH_AES_128_CBC_SHA',\n    'TLS_RSA_WITH_AES_256_CBC_SHA',\n  ],\n};\n\nfunction(params) {\n  local pa = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(pa._config.resources),\n\n  _metadata:: {\n    name: pa._config.name,\n    namespace: pa._config.namespace,\n    labels: pa._config.commonLabels,\n  },\n\n  _metadata_no_ns:: {\n    name: pa._config.name,\n    labels: pa._config.commonLabels,\n  },\n\n  apiService: {\n    apiVersion: 'apiregistration.k8s.io/v1',\n    kind: 'APIService',\n    metadata: {\n      name: 'v1beta1.metrics.k8s.io',\n      labels: pa._config.commonLabels,\n    },\n    spec: {\n      service: {\n        name: $.service.metadata.name,\n        namespace: pa._config.namespace,\n      },\n      group: 'metrics.k8s.io',\n      version: 'v1beta1',\n      insecureSkipTLSVerify: true,\n      groupPriorityMinimum: 100,\n      versionPriority: 100,\n    },\n  },\n\n  configMap: {\n    apiVersion: 'v1',\n    kind: 'ConfigMap',\n    metadata: pa._metadata {\n      name: 'adapter-config',\n    },\n    data: { 'config.yaml': std.manifestYamlDoc(pa._config.config) },\n  },\n\n  serviceMonitor: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: pa._metadata,\n    spec: {\n      selector: {\n        matchLabels: pa._config.selectorLabels,\n      },\n      endpoints: [\n        {\n          port: 'https',\n          interval: '30s',\n          scheme: 'https',\n          tlsConfig: {\n            insecureSkipVerify: true,\n          },\n          bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n          metricRelabelings: [\n            {\n              sourceLabels: ['__name__'],\n              action: 'drop',\n              regex: '(' + std.join('|',\n                                    [\n                                      'apiserver_client_certificate_.*',  // The only client supposed to connect to the aggregated API is the apiserver so it is not really meaningful to monitor its certificate.\n                                      'apiserver_envelope_.*',  // Prometheus-adapter isn't using envelope for storage.\n                                      'apiserver_flowcontrol_.*',  // Prometheus-adapter isn't using flowcontrol.\n                                      'apiserver_storage_.*',  // Prometheus-adapter isn't using the apiserver storage.\n                                      'apiserver_webhooks_.*',  // Prometeus-adapter doesn't make use of apiserver webhooks.\n                                      'workqueue_.*',  // Metrics related to the internal apiserver auth workqueues are not very useful to prometheus-adapter.\n                                    ]) + ')',\n            },\n          ],\n        },\n      ],\n    },\n  },\n\n  service: {\n    apiVersion: 'v1',\n    kind: 'Service',\n    metadata: pa._metadata,\n    spec: {\n      ports: [\n        { name: 'https', targetPort: 6443, port: 443 },\n      ],\n      selector: pa._config.selectorLabels,\n    },\n  },\n\n  networkPolicy: {\n    apiVersion: 'networking.k8s.io/v1',\n    kind: 'NetworkPolicy',\n    metadata: pa.service.metadata,\n    spec: {\n      podSelector: {\n        matchLabels: pa._config.selectorLabels,\n      },\n      policyTypes: ['Egress', 'Ingress'],\n      egress: [{}],\n      // Prometheus-adapter needs ingress allowed so HPAs can request metrics from it.\n      ingress: [{}],\n    },\n  },\n\n  deployment:\n    local c = {\n      name: pa._config.name,\n      image: pa._config.image,\n      args: [\n        '--cert-dir=/var/run/serving-cert',\n        '--config=/etc/adapter/config.yaml',\n        '--metrics-relist-interval=1m',\n        '--prometheus-url=' + pa._config.prometheusURL,\n        '--secure-port=6443',\n        '--tls-cipher-suites=' + std.join(',', pa._config.tlsCipherSuites),\n      ],\n      resources: pa._config.resources,\n      startupProbe: {\n        httpGet: {\n          path: '/livez',\n          port: 'https',\n          scheme: 'HTTPS',\n        },\n        periodSeconds: 10,\n        failureThreshold: 18,\n      },\n      readinessProbe: {\n        httpGet: {\n          path: '/readyz',\n          port: 'https',\n          scheme: 'HTTPS',\n        },\n        periodSeconds: 5,\n        failureThreshold: 5,\n      },\n      livenessProbe: {\n        httpGet: {\n          path: '/livez',\n          port: 'https',\n          scheme: 'HTTPS',\n        },\n        periodSeconds: 5,\n        failureThreshold: 5,\n      },\n      ports: [{ containerPort: 6443, name: 'https' }],\n      volumeMounts: [\n        { name: 'tmpfs', mountPath: '/tmp', readOnly: false },\n        { name: 'volume-serving-cert', mountPath: '/var/run/serving-cert', readOnly: false },\n        { name: 'config', mountPath: '/etc/adapter', readOnly: false },\n      ],\n      securityContext: {\n        allowPrivilegeEscalation: false,\n        readOnlyRootFilesystem: true,\n        runAsNonRoot: true,\n        capabilities: { drop: ['ALL'] },\n        seccompProfile: { type: 'RuntimeDefault' },\n      },\n    };\n\n    {\n      apiVersion: 'apps/v1',\n      kind: 'Deployment',\n      metadata: pa._metadata,\n      spec: {\n        replicas: pa._config.replicas,\n        selector: {\n          matchLabels: pa._config.selectorLabels,\n        },\n        strategy: {\n          rollingUpdate: {\n            maxSurge: 1,\n            maxUnavailable: 1,\n          },\n        },\n        template: {\n          metadata: {\n            annotations: {\n              'checksum.config/md5': std.md5(std.manifestYamlDoc(pa._config.config)),\n            },\n            labels: pa._config.commonLabels,\n          },\n          spec: {\n            containers: [c],\n            serviceAccountName: $.serviceAccount.metadata.name,\n            automountServiceAccountToken: true,\n            nodeSelector: { 'kubernetes.io/os': 'linux' },\n            volumes: [\n              { name: 'tmpfs', emptyDir: {} },\n              { name: 'volume-serving-cert', emptyDir: {} },\n              { name: 'config', configMap: { name: 'adapter-config' } },\n            ],\n          },\n        },\n      },\n    },\n\n  serviceAccount: {\n    apiVersion: 'v1',\n    kind: 'ServiceAccount',\n    metadata: pa._metadata,\n    automountServiceAccountToken: false,\n  },\n\n  clusterRole: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRole',\n    metadata: pa._metadata_no_ns,\n    rules: [{\n      apiGroups: [''],\n      resources: ['nodes', 'namespaces', 'pods', 'services'],\n      verbs: ['get', 'list', 'watch'],\n    }],\n  },\n\n  clusterRoleBinding: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRoleBinding',\n    metadata: pa._metadata_no_ns,\n    roleRef: {\n      apiGroup: 'rbac.authorization.k8s.io',\n      kind: 'ClusterRole',\n      name: $.clusterRole.metadata.name,\n    },\n    subjects: [{\n      kind: 'ServiceAccount',\n      name: $.serviceAccount.metadata.name,\n      namespace: pa._config.namespace,\n    }],\n  },\n\n  clusterRoleBindingDelegator: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRoleBinding',\n    metadata: pa._metadata_no_ns {\n      name: 'resource-metrics:system:auth-delegator',\n    },\n    roleRef: {\n      apiGroup: 'rbac.authorization.k8s.io',\n      kind: 'ClusterRole',\n      name: 'system:auth-delegator',\n    },\n    subjects: [{\n      kind: 'ServiceAccount',\n      name: $.serviceAccount.metadata.name,\n      namespace: pa._config.namespace,\n    }],\n  },\n\n  clusterRoleServerResources: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRole',\n    metadata: pa._metadata_no_ns {\n      name: 'resource-metrics-server-resources',\n    },\n    rules: [{\n      apiGroups: ['metrics.k8s.io'],\n      resources: ['*'],\n      verbs: ['*'],\n    }],\n  },\n\n  clusterRoleAggregatedMetricsReader: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRole',\n    metadata: pa._metadata_no_ns {\n      name: 'system:aggregated-metrics-reader',\n      labels+: {\n        'rbac.authorization.k8s.io/aggregate-to-admin': 'true',\n        'rbac.authorization.k8s.io/aggregate-to-edit': 'true',\n        'rbac.authorization.k8s.io/aggregate-to-view': 'true',\n      },\n    },\n    rules: [{\n      apiGroups: ['metrics.k8s.io'],\n      resources: ['pods', 'nodes'],\n      verbs: ['get', 'list', 'watch'],\n    }],\n  },\n\n  roleBindingAuthReader: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'RoleBinding',\n    metadata: pa._metadata {\n      name: 'resource-metrics-auth-reader',\n      namespace: 'kube-system',\n    },\n    roleRef: {\n      apiGroup: 'rbac.authorization.k8s.io',\n      kind: 'Role',\n      name: 'extension-apiserver-authentication-reader',\n    },\n    subjects: [{\n      kind: 'ServiceAccount',\n      name: $.serviceAccount.metadata.name,\n      namespace: pa._config.namespace,\n    }],\n  },\n\n  [if (defaults + params).replicas > 1 then 'podDisruptionBudget']: {\n    apiVersion: 'policy/v1',\n    kind: 'PodDisruptionBudget',\n    metadata: pa._metadata,\n    spec: {\n      minAvailable: 1,\n      selector: {\n        matchLabels: pa._config.selectorLabels,\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/prometheus-operator.libsonnet",
    "content": "local krp = import './kube-rbac-proxy.libsonnet';\nlocal prometheusOperator = import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet';\n\nlocal defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  name:: 'prometheus-operator',\n  namespace:: error 'must provide namespace',\n  version:: error 'must provide version',\n  image:: error 'must provide image',\n  // Enable both endpoints and endpointslice for the kubelet controller to\n  // ensure that the `endpointslice.kubernetes.io/skip-mirror=true` label is\n  // set on the endpoints object. In the next release we can turn off endpoints\n  // management.\n  kubeletEndpointsEnabled:: true,\n  kubeletEndpointSliceEnabled:: true,\n  kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',\n  configReloaderImage:: error 'must provide config reloader image',\n  resources:: {\n    limits: { cpu: '200m', memory: '200Mi' },\n    requests: { cpu: '100m', memory: '100Mi' },\n  },\n  kubeRbacProxy:: {\n    resources+: {\n      requests: { cpu: '10m', memory: '20Mi' },\n      limits: { cpu: '20m', memory: '40Mi' },\n    },\n  },\n  commonLabels:: {\n    'app.kubernetes.io/name': defaults.name,\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'controller',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  mixin:: {\n    ruleLabels: {\n      role: 'alert-rules',\n      prometheus: defaults.name,\n    },\n    _config: {\n      groupLabels: 'cluster,controller,namespace',\n      prometheusOperatorSelector: 'job=\"prometheus-operator\",namespace=\"' + defaults.namespace + '\"',\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/%s',\n    },\n  },\n};\n\nfunction(params)\n  local config = defaults + params;\n  // Safety check\n  assert std.isObject(config.resources);\n\n  prometheusOperator(config) {\n    local po = self,\n    // declare variable as a field to allow overriding options and to have unified API across all components\n    _config:: config,\n    _metadata:: {\n      labels: po._config.commonLabels,\n      name: po._config.name,\n      namespace: po._config.namespace,\n    },\n    mixin:: (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') +\n            (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') {\n              _config+:: po._config.mixin._config,\n            },\n\n    prometheusRule: {\n      apiVersion: 'monitoring.coreos.com/v1',\n      kind: 'PrometheusRule',\n      metadata: {\n        labels: po._config.commonLabels + po._config.mixin.ruleLabels,\n        name: po._config.name + '-rules',\n        namespace: po._config.namespace,\n      },\n      spec: {\n        local r = if std.objectHasAll(po.mixin, 'prometheusRules') then po.mixin.prometheusRules.groups else [],\n        local a = if std.objectHasAll(po.mixin, 'prometheusAlerts') then po.mixin.prometheusAlerts.groups else [],\n        groups: a + r,\n      },\n    },\n\n    networkPolicy: {\n      apiVersion: 'networking.k8s.io/v1',\n      kind: 'NetworkPolicy',\n      metadata: po.service.metadata,\n      spec: {\n        podSelector: {\n          matchLabels: po._config.selectorLabels,\n        },\n        policyTypes: ['Egress', 'Ingress'],\n        egress: [{}],\n        ingress: [{\n          from: [{\n            podSelector: {\n              matchLabels: {\n                'app.kubernetes.io/name': 'prometheus',\n              },\n            },\n          }],\n          ports: std.map(function(o) {\n            port: o.port,\n            protocol: 'TCP',\n          }, po.service.spec.ports),\n        }],\n      },\n    },\n\n    service+: {\n      spec+: {\n        ports: [\n          {\n            name: 'https',\n            port: 8443,\n            targetPort: 'https',\n          },\n        ],\n      },\n    },\n\n    serviceMonitor+: {\n      spec+: {\n        endpoints: [\n          {\n            port: 'https',\n            scheme: 'https',\n            honorLabels: true,\n            bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n            tlsConfig: {\n              insecureSkipVerify: true,\n            },\n          },\n        ],\n      },\n    },\n\n    clusterRole+: {\n      rules+: [\n        {\n          apiGroups: ['authentication.k8s.io'],\n          resources: ['tokenreviews'],\n          verbs: ['create'],\n        },\n        {\n          apiGroups: ['authorization.k8s.io'],\n          resources: ['subjectaccessreviews'],\n          verbs: ['create'],\n        },\n      ],\n    },\n\n    local kubeRbacProxy = krp(po._config.kubeRbacProxy {\n      name: 'kube-rbac-proxy',\n      upstream: 'http://127.0.0.1:8080/',\n      secureListenAddress: ':8443',\n      ports: [\n        { name: 'https', containerPort: 8443 },\n      ],\n      image: po._config.kubeRbacProxyImage,\n    }),\n\n    deployment+: {\n      spec+: {\n        template+: {\n          spec+: {\n            automountServiceAccountToken: true,\n            securityContext+: {\n              runAsGroup: 65534,\n            },\n            containers+: [kubeRbacProxy],\n          },\n        },\n      },\n    },\n  }\n"
  },
  {
    "path": "jsonnet/kube-prometheus/components/prometheus.libsonnet",
    "content": "local defaults = {\n  local defaults = self,\n  // Convention: Top-level fields related to CRDs are public, other fields are hidden\n  // If there is no CRD for the component, everything is hidden in defaults.\n  name:: error 'must provide name',\n  namespace:: error 'must provide namespace',\n  version: error 'must provide version',\n  image: error 'must provide image',\n  resources: {\n    requests: { memory: '400Mi' },\n  },\n  alerting: {},\n  namespaces:: ['default', 'kube-system', defaults.namespace],\n  replicas: 2,\n  externalLabels: {},\n  enableFeatures: [],\n  ruleSelector: {},\n  commonLabels:: {\n    'app.kubernetes.io/name': 'prometheus',\n    'app.kubernetes.io/instance': defaults.name,\n    'app.kubernetes.io/version': defaults.version,\n    'app.kubernetes.io/component': 'prometheus',\n    'app.kubernetes.io/part-of': 'kube-prometheus',\n  },\n  selectorLabels:: {\n    [labelName]: defaults.commonLabels[labelName]\n    for labelName in std.objectFields(defaults.commonLabels)\n    if !std.setMember(labelName, ['app.kubernetes.io/version'])\n  },\n  serviceDiscoveryRole:: 'EndpointSlice',\n  mixin:: {\n    ruleLabels: {},\n    _config: {\n      prometheusSelector: 'job=\"prometheus-' + defaults.name + '\",namespace=\"' + defaults.namespace + '\"',\n      prometheusName: '{{$labels.namespace}}/{{$labels.pod}}',\n      thanos: {\n        targetGroups: {\n          namespace: defaults.namespace,\n        },\n        sidecar: {\n          selector: 'job=\"thanos-sidecar\"',\n          thanosPrometheusCommonDimensions: 'namespace, pod',\n        },\n      },\n      runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/prometheus/%s',\n    },\n  },\n  thanos: null,\n  reloaderPort:: 8080,\n};\n\nfunction(params) {\n  local p = self,\n  _config:: defaults + params,\n  // Safety check\n  assert std.isObject(p._config.resources),\n  assert std.isObject(p._config.mixin._config),\n  _metadata:: {\n    name: 'prometheus-' + p._config.name,\n    namespace: p._config.namespace,\n    labels: p._config.commonLabels,\n  },\n\n  mixin::\n    (import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') +\n    (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') + {\n      _config+:: p._config.mixin._config,\n    },\n\n  mixinThanos::\n    (import 'github.com/thanos-io/thanos/mixin/alerts/sidecar.libsonnet') +\n    (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') + {\n      _config+:: p._config.mixin._config,\n      targetGroups+: p._config.mixin._config.thanos.targetGroups,\n      sidecar+: p._config.mixin._config.thanos.sidecar,\n    },\n\n  prometheusRule: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: p._metadata {\n      labels+: p._config.mixin.ruleLabels,\n      name: p._metadata.name + '-prometheus-rules',\n    },\n    spec: {\n      local r = if std.objectHasAll(p.mixin, 'prometheusRules') then p.mixin.prometheusRules.groups else [],\n      local a = if std.objectHasAll(p.mixin, 'prometheusAlerts') then p.mixin.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n\n  networkPolicy: {\n    apiVersion: 'networking.k8s.io/v1',\n    kind: 'NetworkPolicy',\n    metadata: p.service.metadata,\n    spec: {\n      podSelector: {\n        matchLabels: p._config.selectorLabels,\n      },\n      policyTypes: ['Egress', 'Ingress'],\n      egress: [{}],\n      ingress: [{\n        from: [{\n          podSelector: {\n            matchLabels: {\n              'app.kubernetes.io/name': 'prometheus',\n            },\n          },\n        }],\n        ports: std.map(function(o) {\n          port: o.port,\n          protocol: 'TCP',\n        }, p.service.spec.ports),\n      }, {\n        from: [{\n          podSelector: {\n            matchLabels: {\n              'app.kubernetes.io/name': 'prometheus-adapter',\n            },\n          },\n        }],\n        ports: [{\n          port: 9090,\n          protocol: 'TCP',\n        }],\n      }, {\n        from: [{\n          podSelector: {\n            matchLabels: {\n              'app.kubernetes.io/name': 'grafana',\n            },\n          },\n        }],\n        ports: [{\n          port: 9090,\n          protocol: 'TCP',\n        }],\n      }] + (if p._config.thanos != null then\n              [{\n                from: [{\n                  podSelector: {\n                    matchLabels: {\n                      'app.kubernetes.io/name': 'thanos-query',\n                    },\n                  },\n                }],\n                ports: [{\n                  port: 10901,\n                  protocol: 'TCP',\n                }],\n              }] else []),\n    },\n  },\n\n  serviceAccount: {\n    apiVersion: 'v1',\n    kind: 'ServiceAccount',\n    metadata: p._metadata,\n    automountServiceAccountToken: true,\n  },\n\n  service: {\n    apiVersion: 'v1',\n    kind: 'Service',\n    metadata: p._metadata,\n    spec: {\n      ports: [\n               { name: 'web', targetPort: 'web', port: 9090 },\n               { name: 'reloader-web', port: p._config.reloaderPort, targetPort: 'reloader-web' },\n             ] +\n             (\n               if p._config.thanos != null then\n                 [\n                   { name: 'grpc', port: 10901, targetPort: 10901 },\n                   { name: 'http', port: 10902, targetPort: 10902 },\n                 ]\n               else []\n             ),\n      selector: p._config.selectorLabels,\n      sessionAffinity: 'ClientIP',\n    },\n  },\n\n  roleBindingSpecificNamespaces:\n    local newSpecificRoleBinding(namespace) = {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'RoleBinding',\n      metadata: p._metadata {\n        namespace: namespace,\n      },\n      roleRef: {\n        apiGroup: 'rbac.authorization.k8s.io',\n        kind: 'Role',\n        name: p._metadata.name,\n      },\n      subjects: [{\n        kind: 'ServiceAccount',\n        name: p.serviceAccount.metadata.name,\n        namespace: p._config.namespace,\n      }],\n    };\n    {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'RoleBindingList',\n      items: [newSpecificRoleBinding(x) for x in p._config.namespaces],\n    },\n\n  clusterRole: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRole',\n    metadata: p._metadata {\n      namespace:: null,\n    },\n    rules: [\n      {\n        apiGroups: [''],\n        resources: ['nodes/metrics'],\n        verbs: ['get'],\n      },\n      {\n        nonResourceURLs: ['/metrics', '/metrics/slis'],\n        verbs: ['get'],\n      },\n    ],\n  },\n\n  roleConfig: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'Role',\n    metadata: p._metadata {\n      name: p._metadata.name + '-config',\n    },\n    rules: [{\n      apiGroups: [''],\n      resources: ['configmaps'],\n      verbs: ['get'],\n    }],\n  },\n\n  roleBindingConfig: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'RoleBinding',\n    metadata: p._metadata {\n      name: p._metadata.name + '-config',\n    },\n    roleRef: {\n      apiGroup: 'rbac.authorization.k8s.io',\n      kind: 'Role',\n      name: p.roleConfig.metadata.name,\n    },\n    subjects: [{\n      kind: 'ServiceAccount',\n      name: p.serviceAccount.metadata.name,\n      namespace: p._config.namespace,\n    }],\n  },\n\n  clusterRoleBinding: {\n    apiVersion: 'rbac.authorization.k8s.io/v1',\n    kind: 'ClusterRoleBinding',\n    metadata: p._metadata {\n      namespace:: null,\n    },\n    roleRef: {\n      apiGroup: 'rbac.authorization.k8s.io',\n      kind: 'ClusterRole',\n      name: p.clusterRole.metadata.name,\n    },\n    subjects: [{\n      kind: 'ServiceAccount',\n      name: p.serviceAccount.metadata.name,\n      namespace: p._config.namespace,\n    }],\n  },\n\n  roleSpecificNamespaces:\n    local newSpecificRole(namespace) = {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'Role',\n      metadata: p._metadata {\n        namespace: namespace,\n      },\n      rules: [\n        if p._config.serviceDiscoveryRole == 'EndpointSlice' then {\n          apiGroups: ['discovery.k8s.io'],\n          resources: ['endpointslices'],\n          verbs: ['get', 'list', 'watch'],\n        }\n        else if p._config.serviceDiscoveryRole == 'Endpoints' then\n          {\n            apiGroups: [''],\n            resources: ['endpoints'],\n            verbs: ['get', 'list', 'watch'],\n          }\n        else\n          error 'Invalid serviceDiscoveryRole: ' + p._config.serviceDiscoveryRole,\n      ] + [\n        {\n          apiGroups: [''],\n          resources: ['services', 'pods'],\n          verbs: ['get', 'list', 'watch'],\n        },\n        {\n          apiGroups: ['extensions'],\n          resources: ['ingresses'],\n          verbs: ['get', 'list', 'watch'],\n        },\n        {\n          apiGroups: ['networking.k8s.io'],\n          resources: ['ingresses'],\n          verbs: ['get', 'list', 'watch'],\n        },\n      ],\n    };\n    {\n      apiVersion: 'rbac.authorization.k8s.io/v1',\n      kind: 'RoleList',\n      items: [newSpecificRole(x) for x in p._config.namespaces],\n    },\n\n  [if (defaults + params).replicas > 1 then 'podDisruptionBudget']: {\n    apiVersion: 'policy/v1',\n    kind: 'PodDisruptionBudget',\n    metadata: p._metadata,\n    spec: {\n      minAvailable: 1,\n      selector: {\n        matchLabels: p._config.selectorLabels,\n      },\n    },\n  },\n\n  prometheus: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'Prometheus',\n    metadata: p._metadata {\n      name: p._config.name,\n    },\n    spec: {\n      replicas: p._config.replicas,\n      version: p._config.version,\n      image: p._config.image,\n      podMetadata: {\n        labels: p.prometheus.metadata.labels,\n      },\n      serviceDiscoveryRole: p._config.serviceDiscoveryRole,\n      externalLabels: p._config.externalLabels,\n      enableFeatures: p._config.enableFeatures,\n      serviceAccountName: p.serviceAccount.metadata.name,\n      podMonitorSelector: {},\n      podMonitorNamespaceSelector: {},\n      probeSelector: {},\n      probeNamespaceSelector: {},\n      ruleNamespaceSelector: {},\n      ruleSelector: p._config.ruleSelector,\n      scrapeConfigSelector: {},\n      scrapeConfigNamespaceSelector: {},\n      serviceMonitorSelector: {},\n      serviceMonitorNamespaceSelector: {},\n      nodeSelector: { 'kubernetes.io/os': 'linux' },\n      resources: p._config.resources,\n      alerting: p._config.alerting,\n      securityContext: {\n        runAsUser: 1000,\n        runAsNonRoot: true,\n        fsGroup: 2000,\n      },\n      [if std.objectHas(params, 'thanos') then 'thanos']: p._config.thanos,\n      [if std.objectHas(params, 'storage') then 'storage']: p._config.storage,\n    },\n  },\n\n  serviceMonitor: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata: p._metadata,\n    spec: {\n      selector: {\n        matchLabels: p._config.selectorLabels,\n      },\n      endpoints: [\n        { port: 'web', interval: '30s' },\n        { port: 'reloader-web', interval: '30s' },\n      ],\n    },\n  },\n\n  // Include thanos sidecar PrometheusRule only if thanos config was passed by user\n  [if std.objectHas(params, 'thanos') && params.thanos != null then 'prometheusRuleThanosSidecar']: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: p._metadata {\n      labels+: p._config.mixin.ruleLabels,\n      name: p._metadata.name + '-thanos-sidecar-rules',\n    },\n    spec: {\n      local r = if std.objectHasAll(p.mixinThanos, 'prometheusRules') then p.mixinThanos.prometheusRules.groups else [],\n      local a = if std.objectHasAll(p.mixinThanos, 'prometheusAlerts') then p.mixinThanos.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n\n  // Include thanos sidecar Service only if thanos config was passed by user\n  [if std.objectHas(params, 'thanos') && params.thanos != null then 'serviceThanosSidecar']: {\n    apiVersion: 'v1',\n    kind: 'Service',\n    metadata+: p._metadata {\n      name: p._metadata.name + '-thanos-sidecar',\n      labels+: {\n        'app.kubernetes.io/component': 'thanos-sidecar',\n      },\n    },\n    spec+: {\n      ports: [\n        { name: 'grpc', port: 10901, targetPort: 10901 },\n        { name: 'http', port: 10902, targetPort: 10902 },\n      ],\n      selector: p._config.selectorLabels {\n        'app.kubernetes.io/component': 'prometheus',\n      },\n      clusterIP: 'None',\n    },\n  },\n\n  // Include thanos sidecar ServiceMonitor only if thanos config was passed by user\n  [if std.objectHas(params, 'thanos') && params.thanos != null then 'serviceMonitorThanosSidecar']: {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'ServiceMonitor',\n    metadata+: p._metadata {\n      name: 'thanos-sidecar',\n      labels+: {\n        'app.kubernetes.io/component': 'thanos-sidecar',\n      },\n    },\n    spec+: {\n      jobLabel: 'app.kubernetes.io/component',\n      selector: {\n        matchLabels: {\n          'app.kubernetes.io/component': 'thanos-sidecar',\n        },\n      },\n      endpoints: [{\n        port: 'http',\n        interval: '30s',\n      }],\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/jsonnetfile.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": [\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/brancz/kubernetes-grafana\",\n          \"subdir\": \"grafana\"\n        }\n      },\n      \"version\": \"master\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/grafana\",\n          \"subdir\": \"grafana-mixin\"\n        }\n      },\n      \"version\": \"main\",\n      \"name\": \"grafana-mixin\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/etcd-io/etcd\",\n          \"subdir\": \"contrib/mixin\"\n        }\n      },\n      \"version\": \"main\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus-operator/prometheus-operator\",\n          \"subdir\": \"jsonnet/prometheus-operator\"\n        }\n      },\n      \"version\": \"main\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus-operator/prometheus-operator\",\n          \"subdir\": \"jsonnet/mixin\"\n        }\n      },\n      \"version\": \"main\",\n      \"name\": \"prometheus-operator-mixin\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/kubernetes-monitoring/kubernetes-mixin\",\n          \"subdir\": \"\"\n        }\n      },\n      \"version\": \"master\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/kubernetes/kube-state-metrics\",\n          \"subdir\": \"jsonnet/kube-state-metrics\"\n        }\n      },\n      \"version\": \"main\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/kubernetes/kube-state-metrics\",\n          \"subdir\": \"jsonnet/kube-state-metrics-mixin\"\n        }\n      },\n      \"version\": \"main\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus/node_exporter\",\n          \"subdir\": \"docs/node-mixin\"\n        }\n      },\n      \"version\": \"master\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus/prometheus\",\n          \"subdir\": \"documentation/prometheus-mixin\"\n        }\n      },\n      \"version\": \"main\",\n      \"name\": \"prometheus\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus/alertmanager\",\n          \"subdir\": \"doc/alertmanager-mixin\"\n        }\n      },\n      \"version\": \"main\",\n      \"name\": \"alertmanager\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/pyrra-dev/pyrra.git\",\n          \"subdir\": \"jsonnet/controller-gen\"\n        }\n      },\n      \"version\": \"main\",\n      \"name\": \"pyrra\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/thanos-io/thanos\",\n          \"subdir\": \"mixin\"\n        }\n      },\n      \"version\": \"main\",\n      \"name\": \"thanos-mixin\"\n    }\n  ],\n  \"legacyImports\": true\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/lib/mixin.libsonnet",
    "content": "local defaults = {\n  name: error 'provide name',\n  namespace: 'monitoring',\n  labels: {\n    prometheus: 'k8s',\n  },\n  mixin: error 'provide a mixin',\n};\n\nfunction(params) {\n  _config:: defaults + params,\n\n  local m = self,\n\n  local prometheusRules = if std.objectHasAll(m._config.mixin, 'prometheusRules') || std.objectHasAll(m._config.mixin, 'prometheusAlerts') then {\n    apiVersion: 'monitoring.coreos.com/v1',\n    kind: 'PrometheusRule',\n    metadata: {\n      labels: m._config.labels,\n      name: m._config.name,\n      namespace: m._config.namespace,\n    },\n    spec: {\n      local r = if std.objectHasAll(m._config.mixin, 'prometheusRules') then m._config.mixin.prometheusRules.groups else [],\n      local a = if std.objectHasAll(m._config.mixin, 'prometheusAlerts') then m._config.mixin.prometheusAlerts.groups else [],\n      groups: a + r,\n    },\n  },\n\n  local grafanaDashboards = if std.objectHasAll(m._config.mixin, 'grafanaDashboards') then (\n    if std.objectHas(m._config, 'dashboardFolder') then {\n      [m._config.dashboardFolder]+: m._config.mixin.grafanaDashboards,\n    } else (m._config.mixin.grafanaDashboards)\n  ),\n\n  prometheusRules: prometheusRules,\n  grafanaDashboards: grafanaDashboards,\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/lib/rule-sanitizer.libsonnet",
    "content": "local defaults = {\n  /* name of rule groups to exclude */\n  excludedRuleGroups: [],\n  /* Rule match is based on field \"alert\" or \"record\" for excludedRules and patchedRules.\n   * When multiple match is found, we can use a \"index\" field to distingush each rule,\n   * which represents their order of appearance. For example, if we have two rules:\n   * [\n   *  {\n   *    name: 'alertmanager.rules',\n   *    rules: [\n   *      {\n   *        alert: 'A',\n   *        field: 'A0 rule',\n   *        labels: {\n   *          severity: 'warning',\n   *        },\n   *      },\n   *      {\n   *        alert: 'A',\n   *        field: 'A1 rule',\n   *        labels: {\n   *          severity: 'warning',\n   *        },\n   *      },\n   *    ],\n   *  },\n   * ]\n   * We can use index 1 to choose \"A1 rule\" for patching, as shown in the example below:\n   * [\n   *   {\n   *     name: 'alertmanager.rules',\n   *     rules: [\n   *       {\n   *         alert: 'A',\n   *         index: 1,\n   *         patch: 'A1',\n   *         labels: {\n   *           severity: 'warning',\n   *         },\n   *       },\n   *     ],\n   *   },\n   * ]\n   */\n  excludedRules: [],\n  patchedRules: [],\n};\n\n\nlocal deleteIndex(rule) = {\n  [k]: rule[k]\n  for k in std.objectFields(rule)\n  if k != 'index'\n};\n\n\nlocal patchOrExcludeRule(rule, ruleSet, operation) =\n  if std.length(ruleSet) == 0 then\n    [deleteIndex(rule)]\n  /* 2 rules match when the name of the patch is a prefix of the name of the rule to patch. */\n  else if ((('alert' in rule && 'alert' in ruleSet[0]) && std.startsWith(rule.alert, ruleSet[0].alert)) ||\n           (('record' in rule && 'record' in ruleSet[0]) && std.startsWith(rule.record, ruleSet[0].record))) &&\n          (!('index' in ruleSet[0]) || (('index' in ruleSet[0]) && (ruleSet[0].index == rule.index))) then\n    if operation == 'patch' then\n      local patch = {\n        [k]: ruleSet[0][k]\n        for k in std.objectFields(ruleSet[0])\n        if k != 'alert' && k != 'record' && k != 'index'\n      };\n      [deleteIndex(std.mergePatch(rule, patch))]\n    else  // equivalnt to operation == 'exclude'\n      []\n\n  else\n    [] + patchOrExcludeRule(rule, ruleSet[1:], operation);\n\n\nlocal sameRuleName(rule1, rule2) =\n  if ('alert' in rule1 && 'alert' in rule2) then\n    rule1.alert == rule2.alert\n  else if ('record' in rule1 && 'record' in rule2) then\n    rule1.record == rule2.record\n  else\n    false;\n\nlocal indexRules(lastRule, ruleSet) =\n  if std.length(ruleSet) == 0 then\n    []\n  else if (lastRule != null) && sameRuleName(lastRule, ruleSet[0]) then\n    local updatedRule = std.mergePatch(ruleSet[0], { index: lastRule.index + 1 });\n    [updatedRule] + indexRules(updatedRule, ruleSet[1:])\n  else\n    local updatedRule = std.mergePatch(ruleSet[0], { index: 0 });\n    [updatedRule] + indexRules(updatedRule, ruleSet[1:]);\n\nlocal ruleName(rule) =\n  if ('alert' in rule) then\n    rule.alert\n  else if ('record' in rule) then\n    rule.record\n  else\n    assert false : 'rule should have either \"alert\" or \"record\" field' + std.toString(rule);\n    '';\n\nlocal patchOrExcludeRuleGroup(group, groupSet, operation) =\n  if std.length(groupSet) == 0 then\n    [group.rules]\n  else if (group.name == groupSet[0].name) then\n    local indexedRules = indexRules(null, std.sort(\n      group.rules, keyF=ruleName\n    ));\n    [patchOrExcludeRule(rule, groupSet[0].rules, operation) for rule in indexedRules]\n  else\n    [] + patchOrExcludeRuleGroup(group, groupSet[1:], operation);\n\nfunction(params) {\n  local ruleModifications = defaults + params,\n  assert std.isArray(ruleModifications.excludedRuleGroups) : 'rule-patcher: excludedRuleGroups should be an array',\n  assert std.isArray(ruleModifications.excludedRules) : 'rule-patcher: excludedRules should be an array',\n  assert std.isArray(ruleModifications.patchedRules) : 'rule-patcher: patchedRules should be an array',\n\n  local excludeRule(o) = o {\n    [if (o.kind == 'PrometheusRule') then 'spec']+: {\n      groups: std.filterMap(\n        function(group) !std.member(ruleModifications.excludedRuleGroups, group.name),\n        function(group)\n          group {\n            rules: std.flattenArrays(\n              patchOrExcludeRuleGroup(group, ruleModifications.excludedRules, 'exclude')\n            ),\n          },\n        super.groups,\n      ),\n    },\n  },\n\n  local patchRule(o) = o {\n    [if (o.kind == 'PrometheusRule') then 'spec']+: {\n      groups: std.map(\n        function(group)\n          group {\n            rules: std.flattenArrays(\n              patchOrExcludeRuleGroup(group, ruleModifications.patchedRules, 'patch')\n            ),\n          },\n        super.groups,\n      ),\n    },\n  },\n\n  // shorthand for rule patching, rule excluding\n  sanitizePrometheusRules(o): {\n    [k]: patchRule(excludeRule(o[k]))\n    for k in std.objectFields(o)\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/lib/utils.libsonnet",
    "content": "{\n  // rangeInterval takes a scrape interval and convert its to a range interval\n  // following Prometheus rule of thumb for rate() and irate().\n  rangeInterval(i='1m'):\n    local interval = std.parseInt(std.substr(i, 0, std.length(i) - 1));\n    interval * 4 + i[std.length(i) - 1],\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/main.libsonnet",
    "content": "local alertmanager = import './components/alertmanager.libsonnet';\nlocal blackboxExporter = import './components/blackbox-exporter.libsonnet';\nlocal grafana = import './components/grafana.libsonnet';\nlocal kubernetesControlPlane = import './components/k8s-control-plane.libsonnet';\nlocal kubeStateMetrics = import './components/kube-state-metrics.libsonnet';\nlocal customMixin = import './components/mixin/custom.libsonnet';\nlocal nodeExporter = import './components/node-exporter.libsonnet';\nlocal prometheusAdapter = import './components/prometheus-adapter.libsonnet';\nlocal prometheusOperator = import './components/prometheus-operator.libsonnet';\nlocal prometheus = import './components/prometheus.libsonnet';\n\nlocal platformPatch = import './platforms/platforms.libsonnet';\n\nlocal utils = import './lib/utils.libsonnet';\n\n{\n  // using `values` as this is similar to helm\n  values:: {\n    common: {\n      namespace: 'default',\n      platform: null,\n      ruleLabels: {\n        role: 'alert-rules',\n        prometheus: $.values.prometheus.name,\n      },\n      // to allow automatic upgrades of components, we store versions in autogenerated `versions.json` file and import it here\n      versions: {\n        alertmanager: error 'must provide version',\n        blackboxExporter: error 'must provide version',\n        grafana: error 'must provide version',\n        kubeStateMetrics: error 'must provide version',\n        nodeExporter: error 'must provide version',\n        prometheus: error 'must provide version',\n        prometheusAdapter: error 'must provide version',\n        prometheusOperator: error 'must provide version',\n        kubeRbacProxy: error 'must provide version',\n        configmapReload: error 'must provide version',\n      } + (import 'versions.json'),\n      images: {\n        alertmanager: 'quay.io/prometheus/alertmanager:v' + $.values.common.versions.alertmanager,\n        blackboxExporter: 'quay.io/prometheus/blackbox-exporter:v' + $.values.common.versions.blackboxExporter,\n        grafana: 'grafana/grafana:' + $.values.common.versions.grafana,\n        kubeStateMetrics: 'registry.k8s.io/kube-state-metrics/kube-state-metrics:v' + $.values.common.versions.kubeStateMetrics,\n        nodeExporter: 'quay.io/prometheus/node-exporter:v' + $.values.common.versions.nodeExporter,\n        prometheus: 'quay.io/prometheus/prometheus:v' + $.values.common.versions.prometheus,\n        prometheusAdapter: 'registry.k8s.io/prometheus-adapter/prometheus-adapter:v' + $.values.common.versions.prometheusAdapter,\n        prometheusOperator: 'quay.io/prometheus-operator/prometheus-operator:v' + $.values.common.versions.prometheusOperator,\n        prometheusOperatorReloader: 'quay.io/prometheus-operator/prometheus-config-reloader:v' + $.values.common.versions.prometheusOperator,\n        kubeRbacProxy: 'quay.io/brancz/kube-rbac-proxy:v' + $.values.common.versions.kubeRbacProxy,\n        configmapReload: 'ghcr.io/jimmidyson/configmap-reload:v' + $.values.common.versions.configmapReload,\n      },\n    },\n    alertmanager: {\n      name: 'main',\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.alertmanager,\n      image: $.values.common.images.alertmanager,\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n    },\n    blackboxExporter: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.blackboxExporter,\n      image: $.values.common.images.blackboxExporter,\n      kubeRbacProxyImage: $.values.common.images.kubeRbacProxy,\n      configmapReloaderImage: $.values.common.images.configmapReload,\n    },\n    grafana: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.grafana,\n      image: $.values.common.images.grafana,\n      prometheusName: $.values.prometheus.name,\n      dashboards: {\n        [name]: $[component].mixin.grafanaDashboards[name]\n        for component in std.objectFields($)\n        if std.objectHasAll(std.get($[component], 'mixin', {}), 'grafanaDashboards')\n        for name in std.objectFields($[component].mixin.grafanaDashboards)\n      },\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n    },\n    kubeStateMetrics: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.kubeStateMetrics,\n      image: $.values.common.images.kubeStateMetrics,\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n      kubeRbacProxyImage: $.values.common.images.kubeRbacProxy,\n    },\n    nodeExporter: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.nodeExporter,\n      image: $.values.common.images.nodeExporter,\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n      kubeRbacProxyImage: $.values.common.images.kubeRbacProxy,\n    },\n    prometheus: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.prometheus,\n      image: $.values.common.images.prometheus,\n      name: 'k8s',\n      alerting: {\n        alertmanagers: [{\n          namespace: $.values.common.namespace,\n          name: 'alertmanager-' + $.values.alertmanager.name,\n          port: $.alertmanager.service.spec.ports[0].name,\n          apiVersion: 'v2',\n        }],\n      },\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n    },\n    prometheusAdapter: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.prometheusAdapter,\n      image: $.values.common.images.prometheusAdapter,\n      prometheusURL: 'http://prometheus-' + $.values.prometheus.name + '.' + $.values.prometheus.namespace + '.svc:9090/',\n      rangeIntervals+: {\n        kubelet: utils.rangeInterval($.kubernetesControlPlane.serviceMonitorKubelet.spec.endpoints[0].interval),\n        nodeExporter: utils.rangeInterval($.nodeExporter.serviceMonitor.spec.endpoints[0].interval),\n      },\n    },\n    prometheusOperator: {\n      namespace: $.values.common.namespace,\n      version: $.values.common.versions.prometheusOperator,\n      image: $.values.common.images.prometheusOperator,\n      configReloaderImage: $.values.common.images.prometheusOperatorReloader,\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n      kubeRbacProxyImage: $.values.common.images.kubeRbacProxy,\n    },\n    kubernetesControlPlane: {\n      namespace: $.values.common.namespace,\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n    },\n    kubePrometheus: {\n      namespace: $.values.common.namespace,\n      mixin+: { ruleLabels: $.values.common.ruleLabels },\n    },\n  },\n\n  alertmanager: alertmanager($.values.alertmanager),\n  blackboxExporter: blackboxExporter($.values.blackboxExporter),\n  grafana: grafana($.values.grafana),\n  kubeStateMetrics: kubeStateMetrics($.values.kubeStateMetrics),\n  nodeExporter: nodeExporter($.values.nodeExporter),\n  prometheus: prometheus($.values.prometheus),\n  prometheusAdapter: prometheusAdapter($.values.prometheusAdapter),\n  prometheusOperator: prometheusOperator($.values.prometheusOperator),\n  kubernetesControlPlane: kubernetesControlPlane($.values.kubernetesControlPlane),\n  kubePrometheus: customMixin($.values.kubePrometheus) + {\n    namespace: {\n      apiVersion: 'v1',\n      kind: 'Namespace',\n      metadata: {\n        name: $.values.common.namespace,\n        labels: {\n          'pod-security.kubernetes.io/warn': 'privileged',\n          'pod-security.kubernetes.io/warn-version': 'latest',\n        },\n      },\n    },\n  },\n} + platformPatch\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/README.md",
    "content": "# Adding a new platform specific configuration\n\nAdding a new platform specific configuration requires to update the [customization example](https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizations/platform-specific.md) and the [platforms.libsonnet](platforms.libsonnet) file by adding the platform to the list of existing ones. This allow the new platform to be discoverable and easily configurable by the users.\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/aks.libsonnet",
    "content": "(import '../addons/managed-cluster.libsonnet') + {\n  values+:: {\n    prometheusAdapter+: {\n      config+: {\n        resourceRules:: null,\n      },\n    },\n  },\n\n  prometheusAdapter+:: {\n    apiService:: null,\n  },\n\n  kubernetesControlPlane+: {\n    kubeDnsPrometheusStackService: {\n      apiVersion: 'v1',\n      kind: 'Service',\n      metadata: {\n        name: 'kube-dns-metrics',\n        namespace: 'kube-system',\n        labels: {\n          'k8s-app': 'kube-dns',\n          // This label is used as the job name in Prometheus\n          'app.kubernetes.io/name': 'kube-dns',\n        },\n      },\n      spec: {\n        ports: [\n          { name: 'metrics', port: 9153, targetPort: 9153 },\n        ],\n        selector: { 'k8s-app': 'kube-dns' },\n        clusterIP: 'None',\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/aws.libsonnet",
    "content": "local service(name, namespace, labels, selector, ports) = {\n  apiVersion: 'v1',\n  kind: 'Service',\n  metadata: {\n    name: name,\n    namespace: namespace,\n    labels: labels,\n  },\n  spec: {\n    ports+: ports,\n    selector: selector,\n    clusterIP: 'None',\n  },\n};\n\n{\n  kubernetesControlPlane+: {\n    kubeControllerManagerPrometheusDiscoveryService: service(\n      'kube-controller-manager-prometheus-discovery',\n      'kube-system',\n      { 'app.kubernetes.io/name': 'kube-controller-manager' },\n      { 'app.kubernetes.io/name': 'kube-controller-manager' },\n      [{ name: 'https-metrics', port: 10257, targetPort: 10257 }],\n    ),\n    kubeSchedulerPrometheusDiscoveryService: service(\n      'kube-scheduler-prometheus-discovery',\n      'kube-system',\n      { 'app.kubernetes.io/name': 'kube-scheduler' },\n      { 'app.kubernetes.io/name': 'kube-scheduler' },\n      [{ name: 'https-metrics', port: 10259, targetPort: 10259 }],\n    ),\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/bootkube.libsonnet",
    "content": "local service(name, namespace, labels, selector, ports) = {\n  apiVersion: 'v1',\n  kind: 'Service',\n  metadata: {\n    name: name,\n    namespace: namespace,\n    labels: labels,\n  },\n  spec: {\n    ports+: ports,\n    selector: selector,\n    clusterIP: 'None',\n  },\n};\n\n{\n  kubernetesControlPlane+: {\n    kubeControllerManagerPrometheusDiscoveryService: service(\n      'kube-controller-manager-prometheus-discovery',\n      'kube-system',\n      { 'app.kubernetes.io/name': 'kube-controller-manager' },\n      { 'app.kubernetes.io/name': 'kube-controller-manager' },\n      [{ name: 'https-metrics', port: 10257, targetPort: 10257 }]\n    ),\n\n    kubeSchedulerPrometheusDiscoveryService: service(\n      'kube-scheduler-prometheus-discovery',\n      'kube-system',\n      { 'app.kubernetes.io/name': 'kube-scheduler' },\n      { 'app.kubernetes.io/name': 'kube-scheduler' },\n      [{ name: 'https-metrics', port: 10259, targetPort: 10259 }]\n    ),\n\n    kubeDnsPrometheusDiscoveryService: service(\n      'kube-dns-prometheus-discovery',\n      'kube-system',\n      { 'app.kubernetes.io/name': 'kube-dns' },\n      { 'app.kubernetes.io/name': 'kube-dns' },\n      [{ name: 'http-metrics-skydns', port: 10055, targetPort: 10055 }, { name: 'http-metrics-dnsmasq', port: 10054, targetPort: 10054 }]\n    ),\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/eks.libsonnet",
    "content": "(import '../addons/aws-vpc-cni.libsonnet') +\n(import '../addons/managed-cluster.libsonnet') + {\n  kubernetesControlPlane+: {\n    serviceMonitorCoreDNS+: {\n      spec+: {\n        endpoints: [\n          {\n            bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',\n            interval: '15s',\n            targetPort: 9153,\n          },\n        ],\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/gke.libsonnet",
    "content": "(import '../addons/managed-cluster.libsonnet') + {\n  values+:: {\n    prometheusAdapter+: {\n      config+: {\n        resourceRules:: null,\n      },\n    },\n  },\n\n  prometheusAdapter+:: {\n    apiService:: null,\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/kops-coredns.libsonnet",
    "content": "{\n  kubernetesControlPlane+: {\n    kubeDnsPrometheusDiscoveryService: {\n      apiVersion: 'v1',\n      kind: 'Service',\n      metadata: {\n        name: 'kube-dns-prometheus-discovery',\n        namespace: 'kube-system',\n        labels: { 'app.kubernetes.io/name': 'kube-dns' },\n      },\n      spec: {\n        ports: [\n          { name: 'metrics', port: 9153, targetPort: 9153 },\n        ],\n        selector: { 'app.kubernetes.io/name': 'kube-dns' },\n        clusterIP: 'None',\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/kops.libsonnet",
    "content": "local service(name, namespace, labels, selector, ports) = {\n  apiVersion: 'v1',\n  kind: 'Service',\n  metadata: {\n    name: name,\n    namespace: namespace,\n    labels: labels,\n  },\n  spec: {\n    ports+: ports,\n    selector: selector,\n    clusterIP: 'None',\n  },\n};\n\n{\n  kubernetesControlPlane+: {\n    kubeControllerManagerPrometheusDiscoveryService: service(\n      'kube-controller-manager-prometheus-discovery',\n      'kube-system',\n      { 'k8s-app': 'kube-controller-manager', 'app.kubernetes.io/name': 'kube-controller-manager' },\n      { 'k8s-app': 'kube-controller-manager' },\n      [{ name: 'https-metrics', port: 10257, targetPort: 10257 }]\n    ),\n    kubeSchedulerPrometheusDiscoveryService: service(\n      'kube-scheduler-prometheus-discovery',\n      'kube-system',\n      { 'k8s-app': 'kube-controller-manager', 'app.kubernetes.io/name': 'kube-scheduler' },\n      { 'k8s-app': 'kube-scheduler' },\n      [{ name: 'https-metrics', port: 10259, targetPort: 10259 }]\n    ),\n    kubeDnsPrometheusDiscoveryService: service(\n      'kube-dns-prometheus-discovery',\n      'kube-system',\n      { 'k8s-app': 'kube-controller-manager', 'app.kubernetes.io/name': 'kube-dns' },\n      { 'k8s-app': 'kube-dns' },\n      [{ name: 'metrics', port: 10055, targetPort: 10055 }, { name: 'http-metrics-dnsmasq', port: 10054, targetPort: 10054 }]\n    ),\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/kubeadm.libsonnet",
    "content": "local service(name, namespace, labels, selector, ports) = {\n  apiVersion: 'v1',\n  kind: 'Service',\n  metadata: {\n    name: name,\n    namespace: namespace,\n    labels: labels,\n  },\n  spec: {\n    ports+: ports,\n    selector: selector,\n    clusterIP: 'None',\n  },\n};\n\n{\n  kubernetesControlPlane+: {\n    kubeControllerManagerPrometheusDiscoveryService: service(\n      'kube-controller-manager-prometheus-discovery',\n      'kube-system',\n      { 'app.kubernetes.io/name': 'kube-controller-manager' },\n      { component: 'kube-controller-manager' },\n      [{ name: 'https-metrics', port: 10257, targetPort: 10257 }]\n    ),\n    kubeSchedulerPrometheusDiscoveryService: service(\n      'kube-scheduler-prometheus-discovery',\n      'kube-system',\n      { 'app.kubernetes.io/name': 'kube-scheduler' },\n      { component: 'kube-scheduler' },\n      [{ name: 'https-metrics', port: 10259, targetPort: 10259 }],\n    ),\n  },\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/kubespray.libsonnet",
    "content": "(import './kubeadm.libsonnet')\n"
  },
  {
    "path": "jsonnet/kube-prometheus/platforms/platforms.libsonnet",
    "content": "local platforms = {\n  aks: import './aks.libsonnet',\n  aws: import './aws.libsonnet',\n  bootkube: import './bootkube.libsonnet',\n  gke: import './gke.libsonnet',\n  eks: import './eks.libsonnet',\n  kops: import './kops.libsonnet',\n  kops_coredns: (import './kops.libsonnet') + (import './kops-coredns.libsonnet'),\n  kubeadm: import './kubeadm.libsonnet',\n  kubespray: import './kubespray.libsonnet',\n};\n\n// platformPatch returns the platform specific patch associated to the given\n// platform.\nlocal platformPatch(p) = if p != null && std.objectHas(platforms, p) then platforms[p] else {};\n\n{\n  // initialize the object to prevent \"Indexed object has no field\" lint errors\n  local p = {\n    values+:: $.values,\n    alertmanager: {},\n    blackboxExporter: {},\n    grafana: {},\n    kubePrometheus: {},\n    kubernetesControlPlane: {},\n    kubeStateMetrics: {},\n    nodeExporter: {},\n    prometheus: {},\n    prometheusAdapter: {},\n    prometheusOperator: {},\n    pyrra: {},\n  } + platformPatch($.values.common.platform),\n\n  alertmanager+: p.alertmanager,\n  blackboxExporter+: p.blackboxExporter,\n  grafana+: p.grafana,\n  kubeStateMetrics+: p.kubeStateMetrics,\n  nodeExporter+: p.nodeExporter,\n  prometheus+: p.prometheus,\n  prometheusAdapter+: p.prometheusAdapter,\n  prometheusOperator+: p.prometheusOperator,\n  kubernetesControlPlane+: p.kubernetesControlPlane,\n  kubePrometheus+: p.kubePrometheus,\n  pyrra+: p.pyrra,\n}\n"
  },
  {
    "path": "jsonnet/kube-prometheus/versions.json",
    "content": "{\n  \"alertmanager\": \"0.31.1\",\n  \"blackboxExporter\": \"0.28.0\",\n  \"grafana\": \"12.4.1\",\n  \"kubeStateMetrics\": \"2.18.0\",\n  \"nodeExporter\": \"1.10.2\",\n  \"prometheus\": \"3.10.0\",\n  \"prometheusAdapter\": \"0.12.0\",\n  \"prometheusOperator\": \"0.89.0\",\n  \"kubeRbacProxy\": \"0.21.0\",\n  \"configmapReload\": \"0.15.0\",\n  \"pyrra\": \"0.9.5\"\n}\n"
  },
  {
    "path": "jsonnetfile.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": [\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/jsonnet-libs.git\",\n          \"subdir\": \"mixin-utils\"\n        }\n      },\n      \"version\": \"master\"\n    },\n    {\n      \"source\": {\n        \"local\": {\n          \"directory\": \"jsonnet/kube-prometheus\"\n        }\n      },\n      \"version\": \"\"\n    }\n  ],\n  \"legacyImports\": true\n}\n"
  },
  {
    "path": "jsonnetfile.lock.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": [\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/brancz/kubernetes-grafana.git\",\n          \"subdir\": \"grafana\"\n        }\n      },\n      \"version\": \"5698c8940b6dadca3f42107b7839557bc041761f\",\n      \"sum\": \"l6fPvh3tW6fWot308w71QY/amrYsFPeitvz1IgJxqQA=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/etcd-io/etcd.git\",\n          \"subdir\": \"contrib/mixin\"\n        }\n      },\n      \"version\": \"c3d0f02056821baadd91c144a3a23a4cae585dc8\",\n      \"sum\": \"XmXkOCriQIZmXwlIIFhqlJMa0e6qGWdxZD+ZDYaN0Po=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/grafana.git\",\n          \"subdir\": \"grafana-mixin\"\n        }\n      },\n      \"version\": \"87f131d24b68d15d721833dc48a609ac4bfa8ae8\",\n      \"sum\": \"sRjOJwJhhkCDmMQls7clo/csVix/b47W+Wc3YCzn64Y=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/grafonnet-lib.git\",\n          \"subdir\": \"grafonnet\"\n        }\n      },\n      \"version\": \"a1d61cce1da59c71409b99b5c7568511fec661ea\",\n      \"sum\": \"342u++/7rViR/zj2jeJOjshzglkZ1SY+hFNuyCBFMdc=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/grafonnet.git\",\n          \"subdir\": \"gen/grafonnet-latest\"\n        }\n      },\n      \"version\": \"7380c9c64fb973f34c3ec46265621a2b0dee0058\",\n      \"sum\": \"V9vAj21qJOc2DlMPDgB1eEjSQU4A+sAA4AXuJ6bd4xc=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/grafonnet.git\",\n          \"subdir\": \"gen/grafonnet-v10.0.0\"\n        }\n      },\n      \"version\": \"7380c9c64fb973f34c3ec46265621a2b0dee0058\",\n      \"sum\": \"xdcrJPJlpkq4+5LpGwN4tPAuheNNLXZjE6tDcyvFjr0=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/grafonnet.git\",\n          \"subdir\": \"gen/grafonnet-v11.4.0\"\n        }\n      },\n      \"version\": \"7380c9c64fb973f34c3ec46265621a2b0dee0058\",\n      \"sum\": \"aVAX09paQYNOoCSKVpuk1exVIyBoMt/C50QJI+Q/3nA=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/jsonnet-libs.git\",\n          \"subdir\": \"grafana-builder\"\n        }\n      },\n      \"version\": \"2e9c7f4a276f6f6a9bc3f994f2b8804555f31bb9\",\n      \"sum\": \"TWpxm5vPO23V3hoF3pdwGs1NvR+PQce9baN716mJq+4=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/grafana/jsonnet-libs.git\",\n          \"subdir\": \"mixin-utils\"\n        }\n      },\n      \"version\": \"2e9c7f4a276f6f6a9bc3f994f2b8804555f31bb9\",\n      \"sum\": \"zVkvwae4zHP6xeIoDvde/wldI6ClprFjnk50mMD9/z4=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/jsonnet-libs/docsonnet.git\",\n          \"subdir\": \"doc-util\"\n        }\n      },\n      \"version\": \"6ac6c69685b8c29c54515448eaca583da2d88150\",\n      \"sum\": \"BrAL/k23jq+xy9oA7TWIhUx07dsA/QLm3g7ktCwe//U=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/jsonnet-libs/xtd.git\",\n          \"subdir\": \"\"\n        }\n      },\n      \"version\": \"4d7f8cb24d613430799f9d56809cc6964f35cea9\",\n      \"sum\": \"hOrwkOx34tOXqoDVnwuI/Uf/dr9HFFSPWpDPOvnEGrk=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/kubernetes-monitoring/kubernetes-mixin.git\",\n          \"subdir\": \"\"\n        }\n      },\n      \"version\": \"d2c92d3f64efc8e12afa9d3e1cc5aae01eb5d7e6\",\n      \"sum\": \"yFrU0CSz4mqmPUNmJ+B5xDxfv+N3ddrkIj9jzkXgkF8=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/kubernetes/kube-state-metrics.git\",\n          \"subdir\": \"jsonnet/kube-state-metrics\"\n        }\n      },\n      \"version\": \"ab562f78ebf4cb97cc2f87c1235e457076035d16\",\n      \"sum\": \"QimcNpwZcRriOp64HdmGCJuV6mzDs9FPWJ7XFnko3Yo=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/kubernetes/kube-state-metrics.git\",\n          \"subdir\": \"jsonnet/kube-state-metrics-mixin\"\n        }\n      },\n      \"version\": \"ab562f78ebf4cb97cc2f87c1235e457076035d16\",\n      \"sum\": \"qclI7LwucTjBef3PkGBkKxF0mfZPbHnn4rlNWKGtR4c=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus-operator/prometheus-operator.git\",\n          \"subdir\": \"jsonnet/mixin\"\n        }\n      },\n      \"version\": \"37969255cfae608577e16b45eb89a7de61d1078d\",\n      \"sum\": \"gi+knjdxs2T715iIQIntrimbHRgHnpM8IFBJDD1gYfs=\",\n      \"name\": \"prometheus-operator-mixin\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus-operator/prometheus-operator.git\",\n          \"subdir\": \"jsonnet/prometheus-operator\"\n        }\n      },\n      \"version\": \"37969255cfae608577e16b45eb89a7de61d1078d\",\n      \"sum\": \"a4Ot/pd9OKsDu67JvPbJ42cySR9YvWB0NIdGX8+Sf8E=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus/alertmanager.git\",\n          \"subdir\": \"doc/alertmanager-mixin\"\n        }\n      },\n      \"version\": \"fa60bc606d939126807b137c3db9a8852288a3ad\",\n      \"sum\": \"diZM7b/jQKqaIjuVSiseRaxgpgdQyVCtCgh0XhyPnXQ=\",\n      \"name\": \"alertmanager\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus/node_exporter.git\",\n          \"subdir\": \"docs/node-mixin\"\n        }\n      },\n      \"version\": \"4c337ddcd43feb86b21789ab0a61d82ae03e3c33\",\n      \"sum\": \"PGx1okd1Ny4U+Ma3AV0haZWvXnX8eJBN4+BsQInWUo4=\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/prometheus/prometheus.git\",\n          \"subdir\": \"documentation/prometheus-mixin\"\n        }\n      },\n      \"version\": \"90c1926c289e1915024febf17889df664159d9d8\",\n      \"sum\": \"UuADJwhNploRwfJYGb0sr2mi+MvswKpumoOMXnGs0Dc=\",\n      \"name\": \"prometheus\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/pyrra-dev/pyrra.git\",\n          \"subdir\": \"jsonnet/controller-gen\"\n        }\n      },\n      \"version\": \"7c7cf366f4cc74f705e9677e6de99cd070d2a5c2\",\n      \"sum\": \"xUGxDjMr7V/SpY21Xsr0X3ve/a04du3pRlbrA3I/Uk8=\",\n      \"name\": \"pyrra\"\n    },\n    {\n      \"source\": {\n        \"git\": {\n          \"remote\": \"https://github.com/thanos-io/thanos.git\",\n          \"subdir\": \"mixin\"\n        }\n      },\n      \"version\": \"f89ca2aff253fd33334b5db3a2c7d4ed508a70d3\",\n      \"sum\": \"ieCD4eMgGbOlrI8GmckGPHBGQDcLasE1rULYq56W/bs=\",\n      \"name\": \"thanos-mixin\"\n    },\n    {\n      \"source\": {\n        \"local\": {\n          \"directory\": \"jsonnet/kube-prometheus\"\n        }\n      },\n      \"version\": \"\"\n    }\n  ],\n  \"legacyImports\": false\n}\n"
  },
  {
    "path": "kubescape-exceptions.json",
    "content": "[\n  {\n    \"name\": \"exclude-automountServiceAccountToken-checks\",\n    \"policyType\": \"postureExceptionPolicy\",\n    \"actions\": [\n      \"alertOnly\"\n    ],\n    \"resources\": [\n      {\n        \"designatorType\": \"Attributes\",\n        \"attributes\": {\n          \"kind\": \"DaemonSet\",\n          \"name\": \"node-exporter\"\n        }\n      },\n      {\n        \"designatorType\": \"Attributes\",\n        \"attributes\": {\n          \"kind\": \"Deployment\",\n          \"name\": \"blackbox-exporter\"\n        }\n      },\n      {\n        \"designatorType\": \"Attributes\",\n        \"attributes\": {\n          \"kind\": \"Deployment\",\n          \"name\": \"kube-state-metrics\"\n        }\n      },\n      {\n        \"designatorType\": \"Attributes\",\n        \"attributes\": {\n          \"kind\": \"Deployment\",\n          \"name\": \"prometheus-adapter\"\n        }\n      },\n      {\n        \"designatorType\": \"Attributes\",\n        \"attributes\": {\n          \"kind\": \"Deployment\",\n          \"name\": \"prometheus-operator\"\n        }\n      },\n      {\n        \"designatorType\": \"Attributes\",\n        \"attributes\": {\n          \"kind\": \"ServiceAccount\",\n          \"name\": \"prometheus-k8s\"\n        }\n      }\n    ],\n    \"posturePolicies\": [\n      {\n        \"controlName\": \"Automatic mapping of service account\"\n      }\n    ]\n  },\n  {\n    \"name\": \"exclude-node-exporter-host-access-checks\",\n    \"policyType\": \"postureExceptionPolicy\",\n    \"actions\": [\n      \"alertOnly\"\n    ],\n    \"resources\": [\n      {\n        \"designatorType\": \"Attributes\",\n        \"attributes\": {\n          \"kind\": \"DaemonSet\",\n          \"name\": \"node-exporter\"\n        }\n      }\n    ],\n    \"posturePolicies\": [\n      {\n        \"controlName\": \"Container hostPort\"\n      },\n      {\n        \"controlName\": \"Host PID/IPC privileges\"\n      },\n      {\n        \"controlName\": \"HostNetwork access\"\n      }\n    ]\n  }\n]\n"
  },
  {
    "path": "kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nresources:\n- ./manifests/alertmanager-alertmanager.yaml\n- ./manifests/alertmanager-networkPolicy.yaml\n- ./manifests/alertmanager-podDisruptionBudget.yaml\n- ./manifests/alertmanager-prometheusRule.yaml\n- ./manifests/alertmanager-secret.yaml\n- ./manifests/alertmanager-service.yaml\n- ./manifests/alertmanager-serviceAccount.yaml\n- ./manifests/alertmanager-serviceMonitor.yaml\n- ./manifests/blackboxExporter-clusterRole.yaml\n- ./manifests/blackboxExporter-clusterRoleBinding.yaml\n- ./manifests/blackboxExporter-configuration.yaml\n- ./manifests/blackboxExporter-deployment.yaml\n- ./manifests/blackboxExporter-networkPolicy.yaml\n- ./manifests/blackboxExporter-service.yaml\n- ./manifests/blackboxExporter-serviceAccount.yaml\n- ./manifests/blackboxExporter-serviceMonitor.yaml\n- ./manifests/grafana-config.yaml\n- ./manifests/grafana-dashboardDatasources.yaml\n- ./manifests/grafana-dashboardDefinitions.yaml\n- ./manifests/grafana-dashboardSources.yaml\n- ./manifests/grafana-deployment.yaml\n- ./manifests/grafana-networkPolicy.yaml\n- ./manifests/grafana-prometheusRule.yaml\n- ./manifests/grafana-service.yaml\n- ./manifests/grafana-serviceAccount.yaml\n- ./manifests/grafana-serviceMonitor.yaml\n- ./manifests/kubePrometheus-prometheusRule.yaml\n- ./manifests/kubeStateMetrics-clusterRole.yaml\n- ./manifests/kubeStateMetrics-clusterRoleBinding.yaml\n- ./manifests/kubeStateMetrics-deployment.yaml\n- ./manifests/kubeStateMetrics-networkPolicy.yaml\n- ./manifests/kubeStateMetrics-prometheusRule.yaml\n- ./manifests/kubeStateMetrics-service.yaml\n- ./manifests/kubeStateMetrics-serviceAccount.yaml\n- ./manifests/kubeStateMetrics-serviceMonitor.yaml\n- ./manifests/kubernetesControlPlane-prometheusRule.yaml\n- ./manifests/kubernetesControlPlane-serviceMonitorApiserver.yaml\n- ./manifests/kubernetesControlPlane-serviceMonitorCoreDNS.yaml\n- ./manifests/kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml\n- ./manifests/kubernetesControlPlane-serviceMonitorKubeScheduler.yaml\n- ./manifests/kubernetesControlPlane-serviceMonitorKubelet.yaml\n- ./manifests/nodeExporter-clusterRole.yaml\n- ./manifests/nodeExporter-clusterRoleBinding.yaml\n- ./manifests/nodeExporter-daemonset.yaml\n- ./manifests/nodeExporter-networkPolicy.yaml\n- ./manifests/nodeExporter-prometheusRule.yaml\n- ./manifests/nodeExporter-service.yaml\n- ./manifests/nodeExporter-serviceAccount.yaml\n- ./manifests/nodeExporter-serviceMonitor.yaml\n- ./manifests/prometheus-clusterRole.yaml\n- ./manifests/prometheus-clusterRoleBinding.yaml\n- ./manifests/prometheus-networkPolicy.yaml\n- ./manifests/prometheus-podDisruptionBudget.yaml\n- ./manifests/prometheus-prometheus.yaml\n- ./manifests/prometheus-prometheusRule.yaml\n- ./manifests/prometheus-roleBindingConfig.yaml\n- ./manifests/prometheus-roleBindingSpecificNamespaces.yaml\n- ./manifests/prometheus-roleConfig.yaml\n- ./manifests/prometheus-roleSpecificNamespaces.yaml\n- ./manifests/prometheus-service.yaml\n- ./manifests/prometheus-serviceAccount.yaml\n- ./manifests/prometheus-serviceMonitor.yaml\n- ./manifests/prometheusAdapter-apiService.yaml\n- ./manifests/prometheusAdapter-clusterRole.yaml\n- ./manifests/prometheusAdapter-clusterRoleAggregatedMetricsReader.yaml\n- ./manifests/prometheusAdapter-clusterRoleBinding.yaml\n- ./manifests/prometheusAdapter-clusterRoleBindingDelegator.yaml\n- ./manifests/prometheusAdapter-clusterRoleServerResources.yaml\n- ./manifests/prometheusAdapter-configMap.yaml\n- ./manifests/prometheusAdapter-deployment.yaml\n- ./manifests/prometheusAdapter-networkPolicy.yaml\n- ./manifests/prometheusAdapter-podDisruptionBudget.yaml\n- ./manifests/prometheusAdapter-roleBindingAuthReader.yaml\n- ./manifests/prometheusAdapter-service.yaml\n- ./manifests/prometheusAdapter-serviceAccount.yaml\n- ./manifests/prometheusAdapter-serviceMonitor.yaml\n- ./manifests/prometheusOperator-clusterRole.yaml\n- ./manifests/prometheusOperator-clusterRoleBinding.yaml\n- ./manifests/prometheusOperator-deployment.yaml\n- ./manifests/prometheusOperator-networkPolicy.yaml\n- ./manifests/prometheusOperator-prometheusRule.yaml\n- ./manifests/prometheusOperator-service.yaml\n- ./manifests/prometheusOperator-serviceAccount.yaml\n- ./manifests/prometheusOperator-serviceMonitor.yaml\n- ./manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml\n- ./manifests/setup/0alertmanagerCustomResourceDefinition.yaml\n- ./manifests/setup/0podmonitorCustomResourceDefinition.yaml\n- ./manifests/setup/0probeCustomResourceDefinition.yaml\n- ./manifests/setup/0prometheusCustomResourceDefinition.yaml\n- ./manifests/setup/0prometheusagentCustomResourceDefinition.yaml\n- ./manifests/setup/0prometheusruleCustomResourceDefinition.yaml\n- ./manifests/setup/0scrapeconfigCustomResourceDefinition.yaml\n- ./manifests/setup/0servicemonitorCustomResourceDefinition.yaml\n- ./manifests/setup/0thanosrulerCustomResourceDefinition.yaml\n- ./manifests/setup/namespace.yaml\n"
  },
  {
    "path": "manifests/alertmanager-alertmanager.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: Alertmanager\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n  name: main\n  namespace: monitoring\nspec:\n  alertmanagerConfigSelector: {}\n  image: quay.io/prometheus/alertmanager:v0.31.1\n  nodeSelector:\n    kubernetes.io/os: linux\n  podMetadata:\n    labels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 0.31.1\n  replicas: 3\n  resources:\n    limits:\n      cpu: 100m\n      memory: 100Mi\n    requests:\n      cpu: 4m\n      memory: 100Mi\n  secrets: []\n  securityContext:\n    fsGroup: 2000\n    runAsNonRoot: true\n    runAsUser: 1000\n  serviceAccountName: alertmanager-main\n  version: 0.31.1\n"
  },
  {
    "path": "manifests/alertmanager-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9093\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: alertmanager\n    ports:\n    - port: 9094\n      protocol: TCP\n    - port: 9094\n      protocol: UDP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/alertmanager-podDisruptionBudget.yaml",
    "content": "apiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  maxUnavailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/alertmanager-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n    prometheus: k8s\n    role: alert-rules\n  name: alertmanager-main-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: alertmanager.rules\n    rules:\n    - alert: AlertmanagerFailedReload\n      annotations:\n        description: Configuration has failed to load for {{ $labels.namespace }}/{{ $labels.pod}}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedreload\n        summary: Reloading an Alertmanager configuration has failed.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(alertmanager_config_last_reload_successful{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n    - alert: AlertmanagerMembersInconsistent\n      annotations:\n        description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} has only found {{ $value }} members of the {{$labels.job}} cluster.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagermembersinconsistent\n        summary: A member of an Alertmanager cluster has not found all other cluster members.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n          max_over_time(alertmanager_cluster_members{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}[5m])\n        < on (namespace,service) group_left\n          count by (namespace,service) (max_over_time(alertmanager_cluster_members{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}[5m]))\n      for: 15m\n      labels:\n        severity: critical\n    - alert: AlertmanagerFailedToSendAlerts\n      annotations:\n        description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} failed to send {{ $value | humanizePercentage }} of notifications to {{ $labels.integration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedtosendalerts\n        summary: An Alertmanager instance failed to send notifications.\n      expr: |\n        (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}[15m])\n        /\n          ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}[15m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n        description: The minimum notification failure rate to {{ $labels.integration }} sent from any instance in the {{$labels.job}} cluster is {{ $value | humanizePercentage }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications to a critical integration.\n      expr: |\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\", integration=~`.*`}[15m])\n        /\n          ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\", integration=~`.*`}[15m]) > 0\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n        description: The minimum notification failure rate to {{ $labels.integration }} sent from any instance in the {{$labels.job}} cluster is {{ $value | humanizePercentage }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications to a non-critical integration.\n      expr: |\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\", integration!~`.*`}[15m])\n        /\n          ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\", integration!~`.*`}[15m]) > 0\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n    - alert: AlertmanagerConfigInconsistent\n      annotations:\n        description: Alertmanager instances within the {{$labels.job}} cluster have different configurations.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerconfiginconsistent\n        summary: Alertmanager instances within the same cluster have different configurations.\n      expr: |\n        count by (namespace,service) (\n          count_values by (namespace,service) (\"config_hash\", alertmanager_config_hash{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"})\n        )\n        != 1\n      for: 20m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterDown\n      annotations:\n        description: '{{ $value | humanizePercentage }} of Alertmanager instances within the {{$labels.job}} cluster have been up for less than half of the last 5m.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterdown\n        summary: Half or more of the Alertmanager instances within the same cluster are down.\n      expr: |\n        (\n          count by (namespace,service) (\n            avg_over_time(up{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}[5m]) < 0.5\n          )\n        /\n          count by (namespace,service) (\n            up{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterCrashlooping\n      annotations:\n        description: '{{ $value | humanizePercentage }} of Alertmanager instances within the {{$labels.job}} cluster have restarted at least 5 times in the last 10m.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclustercrashlooping\n        summary: Half or more of the Alertmanager instances within the same cluster are crashlooping.\n      expr: |\n        (\n          count by (namespace,service) (\n            changes(process_start_time_seconds{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}[10m]) > 4\n          )\n        /\n          count by (namespace,service) (\n            up{job=\"alertmanager-main\",container=\"alertmanager\",namespace=\"monitoring\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n"
  },
  {
    "path": "manifests/alertmanager-secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n  name: alertmanager-main\n  namespace: monitoring\nstringData:\n  alertmanager.yaml: |-\n    \"global\":\n      \"resolve_timeout\": \"5m\"\n    \"inhibit_rules\":\n    - \"equal\":\n      - \"namespace\"\n      - \"alertname\"\n      \"source_matchers\":\n      - \"severity = critical\"\n      \"target_matchers\":\n      - \"severity =~ warning|info\"\n    - \"equal\":\n      - \"namespace\"\n      - \"alertname\"\n      \"source_matchers\":\n      - \"severity = warning\"\n      \"target_matchers\":\n      - \"severity = info\"\n    - \"equal\":\n      - \"namespace\"\n      \"source_matchers\":\n      - \"alertname = InfoInhibitor\"\n      \"target_matchers\":\n      - \"severity = info\"\n    \"receivers\":\n    - \"name\": \"Default\"\n    - \"name\": \"Watchdog\"\n    - \"name\": \"Critical\"\n    - \"name\": \"null\"\n    \"route\":\n      \"group_by\":\n      - \"namespace\"\n      \"group_interval\": \"5m\"\n      \"group_wait\": \"30s\"\n      \"receiver\": \"Default\"\n      \"repeat_interval\": \"12h\"\n      \"routes\":\n      - \"matchers\":\n        - \"alertname = Watchdog\"\n        \"receiver\": \"Watchdog\"\n      - \"matchers\":\n        - \"alertname = InfoInhibitor\"\n        \"receiver\": \"null\"\n      - \"matchers\":\n        - \"severity = critical\"\n        \"receiver\": \"Critical\"\ntype: Opaque\n"
  },
  {
    "path": "manifests/alertmanager-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  ports:\n  - name: web\n    port: 9093\n    targetPort: web\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n  selector:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n  sessionAffinity: ClientIP\n"
  },
  {
    "path": "manifests/alertmanager-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n  name: alertmanager-main\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/alertmanager-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.31.1\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 30s\n    port: web\n  - interval: 30s\n    port: reloader-web\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/blackboxExporter-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter\nrules:\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n"
  },
  {
    "path": "manifests/blackboxExporter-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: blackbox-exporter\nsubjects:\n- kind: ServiceAccount\n  name: blackbox-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/blackboxExporter-configuration.yaml",
    "content": "apiVersion: v1\ndata:\n  config.yml: |-\n    \"modules\":\n      \"http_2xx\":\n        \"http\":\n          \"preferred_ip_protocol\": \"ip4\"\n        \"prober\": \"http\"\n      \"http_post_2xx\":\n        \"http\":\n          \"method\": \"POST\"\n          \"preferred_ip_protocol\": \"ip4\"\n        \"prober\": \"http\"\n      \"irc_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"send\": \"NICK prober\"\n          - \"send\": \"USER prober prober prober :prober\"\n          - \"expect\": \"PING :([^ ]+)\"\n            \"send\": \"PONG ${1}\"\n          - \"expect\": \"^:[^ ]+ 001\"\n      \"pop3s_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"expect\": \"^+OK\"\n          \"tls\": true\n          \"tls_config\":\n            \"insecure_skip_verify\": false\n      \"ssh_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"expect\": \"^SSH-2.0-\"\n      \"tcp_connect\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter-configuration\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/blackboxExporter-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: blackbox-exporter\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: blackbox-exporter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.28.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --config.file=/etc/blackbox_exporter/config.yml\n        - --web.listen-address=:19115\n        image: quay.io/prometheus/blackbox-exporter:v0.28.0\n        name: blackbox-exporter\n        ports:\n        - containerPort: 19115\n          name: http\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65534\n          runAsNonRoot: true\n          runAsUser: 65534\n        volumeMounts:\n        - mountPath: /etc/blackbox_exporter/\n          name: config\n          readOnly: true\n      - args:\n        - --webhook-url=http://localhost:19115/-/reload\n        - --volume-dir=/etc/blackbox_exporter/\n        image: ghcr.io/jimmidyson/configmap-reload:v0.15.0\n        name: module-configmap-reloader\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65534\n          runAsNonRoot: true\n          runAsUser: 65534\n        terminationMessagePath: /dev/termination-log\n        terminationMessagePolicy: FallbackToLogsOnError\n        volumeMounts:\n        - mountPath: /etc/blackbox_exporter/\n          name: config\n          readOnly: true\n      - args:\n        - --secure-listen-address=:9115\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:19115/\n        image: quay.io/brancz/kube-rbac-proxy:v0.21.0\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 9115\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n          seccompProfile:\n            type: RuntimeDefault\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: blackbox-exporter\n      volumes:\n      - configMap:\n          name: blackbox-exporter-configuration\n        name: config\n"
  },
  {
    "path": "manifests/blackboxExporter-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9115\n      protocol: TCP\n    - port: 19115\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/blackboxExporter-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  ports:\n  - name: https\n    port: 9115\n    targetPort: https\n  - name: probe\n    port: 19115\n    targetPort: http\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/blackboxExporter-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/blackboxExporter-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.28.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    path: /metrics\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/grafana-config.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana-config\n  namespace: monitoring\nstringData:\n  grafana.ini: |\n    [date_formats]\n    default_timezone = UTC\ntype: Opaque\n"
  },
  {
    "path": "manifests/grafana-dashboardDatasources.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana-datasources\n  namespace: monitoring\nstringData:\n  datasources.yaml: |-\n    {\n        \"apiVersion\": 1,\n        \"datasources\": [\n            {\n                \"access\": \"proxy\",\n                \"editable\": false,\n                \"name\": \"prometheus\",\n                \"orgId\": 1,\n                \"type\": \"prometheus\",\n                \"url\": \"http://prometheus-k8s.monitoring.svc:9090\",\n                \"version\": 1\n            }\n        ]\n    }\ntype: Opaque\n"
  },
  {
    "path": "manifests/grafana-dashboardDefinitions.yaml",
    "content": "apiVersion: v1\nitems:\n- apiVersion: v1\n  data:\n    alertmanager-overview.json: |-\n      {\n          \"graphTooltip\": 1,\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Alerts\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"description\": \"current set of alerts stored in the Alertmanager\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(alertmanager_alerts{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}) by (namespace,service,instance)\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Alerts\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"description\": \"rate of successful and invalid alerts received by the Alertmanager\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(rate(alertmanager_alerts_received_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} Received\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(rate(alertmanager_alerts_invalid_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} Invalid\"\n                      }\n                  ],\n                  \"title\": \"Alerts receive rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 4,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Notifications\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"description\": \"rate of successful and invalid notifications sent by the Alertmanager\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"repeat\": \"integration\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(rate(alertmanager_notifications_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} Total\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(rate(alertmanager_notifications_failed_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} Failed\"\n                      }\n                  ],\n                  \"title\": \"$integration: Notifications Send Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"description\": \"latency of notifications sent by the Alertmanager\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 9\n                  },\n                  \"id\": 6,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"repeat\": \"integration\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n)\\n\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} 99th Percentile\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"histogram_quantile(0.50,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n)\\n\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} Median\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(rate(alertmanager_notification_latency_seconds_sum{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n/\\nsum(rate(alertmanager_notification_latency_seconds_count{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} Average\"\n                      }\n                  ],\n                  \"title\": \"$integration: Notification Duration\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"alertmanager-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"Prometheus\",\n                          \"value\": \"Prometheus\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"includeAll\": false,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(alertmanager_alerts, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"includeAll\": false,\n                      \"label\": \"service\",\n                      \"name\": \"service\",\n                      \"query\": \"label_values(alertmanager_alerts, service)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"$__all\",\n                          \"value\": \"$__all\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 2,\n                      \"includeAll\": true,\n                      \"name\": \"integration\",\n                      \"query\": \"label_values(alertmanager_notifications_total{integration=~\\\".*\\\"}, integration)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"30s\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Alertmanager / Overview\",\n          \"uid\": \"alertmanager-overview\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-alertmanager-overview\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    apiserver.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\",\n                  \"gridPos\": {\n                      \"h\": 2,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"options\": {\n                      \"content\": \"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"title\": \"Notice\",\n                  \"type\": \"text\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many percent of requests (both read and write) in 30 days have been answered successfully and fast enough?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"decimals\": 3,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 2\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"}\"\n                      }\n                  ],\n                  \"title\": \"Availability (30d) > 99.000%\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How much error budget is left looking at our 0.990% availability guarantees?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100\n                          },\n                          \"decimals\": 3,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 16,\n                      \"x\": 8,\n                      \"y\": 2\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"100 * (apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"} - 0.990000)\",\n                          \"legendFormat\": \"errorbudget\"\n                      }\n                  ],\n                  \"title\": \"ErrorBudget (30d) > 99.000%\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many percent of read requests (LIST,GET) in 30 days have been answered successfully and fast enough?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"decimals\": 3,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"apiserver_request:availability30d{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\"\n                      }\n                  ],\n                  \"title\": \"Read Availability (30d)\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many read requests (LIST,GET) per second do the apiservers get by code?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"reqps\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/2../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#56A64B\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/3../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#F2CC0C\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/4../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#3274D9\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/5../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#E02F44\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 6,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\n                          \"legendFormat\": \"{{ code }}\"\n                      }\n                  ],\n                  \"title\": \"Read SLI - Requests\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many percent of read requests (LIST,GET) per second are returned with errors (5xx)?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"min\": 0,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 12,\n                      \"y\": 9\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\n                          \"legendFormat\": \"{{ resource }}\"\n                      }\n                  ],\n                  \"title\": \"Read SLI - Errors\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many seconds is the 99th percentile for reading (LIST|GET) a given resource?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 9\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"cluster_quantile:apiserver_request_sli_duration_seconds:histogram_quantile{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{ resource }}\"\n                      }\n                  ],\n                  \"title\": \"Read SLI - Duration\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many percent of write requests (POST|PUT|PATCH|DELETE) in 30 days have been answered successfully and fast enough?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"decimals\": 3,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 0,\n                      \"y\": 16\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"apiserver_request:availability30d{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\"\n                      }\n                  ],\n                  \"title\": \"Write Availability (30d)\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many write requests (POST|PUT|PATCH|DELETE) per second do the apiservers get by code?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"reqps\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/2../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#56A64B\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/3../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#F2CC0C\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/4../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#3274D9\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/5../i\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": \"#E02F44\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 6,\n                      \"y\": 16\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\n                          \"legendFormat\": \"{{ code }}\"\n                      }\n                  ],\n                  \"title\": \"Write SLI - Requests\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many percent of write requests (POST|PUT|PATCH|DELETE) per second are returned with errors (5xx)?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"min\": 0,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 12,\n                      \"y\": 16\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\n                          \"legendFormat\": \"{{ resource }}\"\n                      }\n                  ],\n                  \"title\": \"Write SLI - Errors\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"description\": \"How many seconds is the 99th percentile for writing (POST|PUT|PATCH|DELETE) a given resource?\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 16\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"cluster_quantile:apiserver_request_sli_duration_seconds:histogram_quantile{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{ resource }}\"\n                      }\n                  ],\n                  \"title\": \"Write SLI - Duration\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"min\": 0,\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 23\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(workqueue_adds_total{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\n                          \"legendFormat\": \"{{instance}} {{name}}\"\n                      }\n                  ],\n                  \"title\": \"Work Queue Add Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 23\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(workqueue_depth{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\n                          \"legendFormat\": \"{{instance}} {{name}}\"\n                      }\n                  ],\n                  \"title\": \"Work Queue Depth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"min\": 0,\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 30\n                  },\n                  \"id\": 14,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name, le))\",\n                          \"legendFormat\": \"{{instance}} {{name}}\"\n                      }\n                  ],\n                  \"title\": \"Work Queue Latency\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 37\n                  },\n                  \"id\": 15,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"process_resident_memory_bytes{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 37\n                  },\n                  \"id\": 16,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"rate(process_cpu_seconds_total{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"CPU usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 37\n                  },\n                  \"id\": 17,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"go_goroutines{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Goroutines\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"apiserver\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(up{job=\\\"apiserver\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / API server\",\n          \"uid\": \"09ec8aa1e996d6ffcd6817bbaff4db1b\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-apiserver\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    cluster-total.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Transmitted\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Bits/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Packets/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"pps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down\",\n                                              \"url\": \"/d/8b7a8b326d7a6f1f04244066368c67af/kubernetes-networking-namespace-pods?${datasource:queryparam}&var-cluster=${cluster}&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 3,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"avg by (namespace) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"avg by (namespace) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Status\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"namespace\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"Time 7\": true,\n                                  \"Time 8\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Time 7\": 6,\n                                  \"Time 8\": 7,\n                                  \"Value #A\": 9,\n                                  \"Value #B\": 10,\n                                  \"Value #C\": 11,\n                                  \"Value #D\": 12,\n                                  \"Value #E\": 13,\n                                  \"Value #F\": 14,\n                                  \"Value #G\": 15,\n                                  \"Value #H\": 16,\n                                  \"namespace\": 8\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Rx Bits\",\n                                  \"Value #B\": \"Tx Bits\",\n                                  \"Value #C\": \"Rx Bits (Avg)\",\n                                  \"Value #D\": \"Tx Bits (Avg)\",\n                                  \"Value #E\": \"Rx Packets\",\n                                  \"Value #F\": \"Tx Packets\",\n                                  \"Value #G\": \"Rx Packets Dropped\",\n                                  \"Value #H\": \"Tx Packets Dropped\",\n                                  \"namespace\": \"Namespace\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"avg by (namespace) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Rate of Bits Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 18\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"avg by (namespace) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Rate of Bits Transmitted\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 36\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 36\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 45\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 45\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (namespace) (\\n    rate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\",cluster=\\\"$cluster\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 54\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (instance) (\\n    rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$__rate_interval]) / rate(node_netstat_Tcp_OutSegs{cluster=\\\"$cluster\\\"}[$__rate_interval])\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of TCP Retransmits out of all sent segments\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 54\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (instance) (\\n    rate(node_netstat_TcpExt_TCPSynRetrans{cluster=\\\"$cluster\\\"}[$__rate_interval]) / rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$__rate_interval])\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of TCP SYN Retransmits out of all retransmits\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Cluster\",\n          \"uid\": \"ff635a025bcfea7bc3dd4f508990a3e9\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-cluster-total\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    controller-manager.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Up\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 20,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(workqueue_adds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\"\n                      }\n                  ],\n                  \"title\": \"Work Queue Add Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(workqueue_depth{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\"\n                      }\n                  ],\n                  \"title\": \"Work Queue Depth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name, le))\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\"\n                      }\n                  ],\n                  \"title\": \"Work Queue Latency\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"2xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"3xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"4xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"5xx\"\n                      }\n                  ],\n                  \"title\": \"Kube API Request Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 16,\n                      \"x\": 8,\n                      \"y\": 21\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, le))\",\n                          \"legendFormat\": \"{{verb}}\"\n                      }\n                  ],\n                  \"title\": \"Post Request Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, le))\",\n                          \"legendFormat\": \"{{verb}}\"\n                      }\n                  ],\n                  \"title\": \"Get Request Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 35\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"CPU usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 35\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Goroutines\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-controller-manager\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Controller Manager\",\n          \"uid\": \"72e0e05bef5099e5f049b05fdc429ed4\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-controller-manager\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    grafana-overview.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n                  {\n                      \"builtIn\": 1,\n                      \"datasource\": {\n                          \"type\": \"datasource\",\n                          \"uid\": \"grafana\"\n                      },\n                      \"enable\": true,\n                      \"hide\": true,\n                      \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                      \"name\": \"Annotations & Alerts\",\n                      \"target\": {\n                          \"limit\": 100,\n                          \"matchAny\": false,\n                          \"tags\": [\n\n                          ],\n                          \"type\": \"dashboard\"\n                      },\n                      \"type\": \"dashboard\"\n                  }\n              ]\n          },\n          \"editable\": false,\n          \"fiscalYearStartMonth\": 0,\n          \"graphTooltip\": 0,\n          \"id\": 23,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"mappings\": [\n\n                          ],\n                          \"noValue\": \"0\",\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          }\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 5,\n                      \"w\": 6,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 6,\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"percentChangeColorMode\": \"standard\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"mean\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"showPercentChange\": false,\n                      \"text\": {\n\n                      },\n                      \"textMode\": \"auto\",\n                      \"wideLayout\": true\n                  },\n                  \"pluginVersion\": \"12.0.2\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"grafana_alerting_result_total{job=~\\\"$job\\\", instance=~\\\"$instance\\\", state=\\\"alerting\\\"}\",\n                          \"instant\": true,\n                          \"interval\": \"1m\",\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Firing Alerts\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          }\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 5,\n                      \"w\": 6,\n                      \"x\": 6,\n                      \"y\": 0\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"percentChangeColorMode\": \"standard\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"mean\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"showPercentChange\": false,\n                      \"text\": {\n\n                      },\n                      \"textMode\": \"auto\",\n                      \"wideLayout\": true\n                  },\n                  \"pluginVersion\": \"12.0.2\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(grafana_stat_totals_dashboard{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                          \"interval\": \"1m\",\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Dashboards\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"cellOptions\": {\n                                  \"type\": \"auto\"\n                              },\n                              \"inspect\": false\n                          },\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          }\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 5,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 10,\n                  \"options\": {\n                      \"cellHeight\": \"sm\",\n                      \"footer\": {\n                          \"countRows\": false,\n                          \"fields\": \"\",\n                          \"reducer\": [\n                              \"sum\"\n                          ],\n                          \"show\": false\n                      },\n                      \"showHeader\": true\n                  },\n                  \"pluginVersion\": \"12.0.2\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"grafana_build_info{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}\",\n                          \"instant\": true,\n                          \"interval\": \"1m\",\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Build Info\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"labelsToFields\",\n                          \"options\": {\n\n                          }\n                      },\n                      {\n                          \"id\": \"merge\",\n                          \"options\": {\n\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Value\": true,\n                                  \"branch\": true,\n                                  \"container\": true,\n                                  \"goversion\": true,\n                                  \"namespace\": true,\n                                  \"pod\": true,\n                                  \"revision\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time\": 7,\n                                  \"Value\": 11,\n                                  \"branch\": 4,\n                                  \"container\": 8,\n                                  \"edition\": 2,\n                                  \"goversion\": 6,\n                                  \"instance\": 1,\n                                  \"job\": 0,\n                                  \"namespace\": 9,\n                                  \"pod\": 10,\n                                  \"revision\": 5,\n                                  \"version\": 3\n                              },\n                              \"renameByName\": {\n\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"mode\": \"palette-classic\"\n                          },\n                          \"custom\": {\n                              \"axisBorderShow\": false,\n                              \"axisCenteredZero\": false,\n                              \"axisColorMode\": \"text\",\n                              \"axisLabel\": \"\",\n                              \"axisPlacement\": \"auto\",\n                              \"barAlignment\": 0,\n                              \"barWidthFactor\": 0.6,\n                              \"drawStyle\": \"line\",\n                              \"fillOpacity\": 10,\n                              \"gradientMode\": \"none\",\n                              \"hideFrom\": {\n                                  \"legend\": false,\n                                  \"tooltip\": false,\n                                  \"viz\": false\n                              },\n                              \"insertNulls\": false,\n                              \"lineInterpolation\": \"linear\",\n                              \"lineWidth\": 1,\n                              \"pointSize\": 5,\n                              \"scaleDistribution\": {\n                                  \"type\": \"linear\"\n                              },\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": false,\n                              \"stacking\": {\n                                  \"group\": \"A\",\n                                  \"mode\": \"normal\"\n                              },\n                              \"thresholdsStyle\": {\n                                  \"mode\": \"off\"\n                              }\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          },\n                          \"unit\": \"reqps\"\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 8,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 5\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"alertThreshold\": true,\n                      \"legend\": {\n                          \"calcs\": [\n\n                          ],\n                          \"displayMode\": \"list\",\n                          \"placement\": \"bottom\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"hideZeros\": false,\n                          \"mode\": \"multi\",\n                          \"sort\": \"none\"\n                      }\n                  },\n                  \"pluginVersion\": \"12.0.2\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum by (status_code) (irate(grafana_http_request_duration_seconds_count{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}[1m])) \",\n                          \"interval\": \"1m\",\n                          \"legendFormat\": \"{{status_code}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"RPS\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"mode\": \"palette-classic\"\n                          },\n                          \"custom\": {\n                              \"axisBorderShow\": false,\n                              \"axisCenteredZero\": false,\n                              \"axisColorMode\": \"text\",\n                              \"axisLabel\": \"\",\n                              \"axisPlacement\": \"auto\",\n                              \"barAlignment\": 0,\n                              \"barWidthFactor\": 0.6,\n                              \"drawStyle\": \"line\",\n                              \"fillOpacity\": 10,\n                              \"gradientMode\": \"none\",\n                              \"hideFrom\": {\n                                  \"legend\": false,\n                                  \"tooltip\": false,\n                                  \"viz\": false\n                              },\n                              \"insertNulls\": false,\n                              \"lineInterpolation\": \"linear\",\n                              \"lineWidth\": 1,\n                              \"pointSize\": 5,\n                              \"scaleDistribution\": {\n                                  \"type\": \"linear\"\n                              },\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": false,\n                              \"stacking\": {\n                                  \"group\": \"A\",\n                                  \"mode\": \"none\"\n                              },\n                              \"thresholdsStyle\": {\n                                  \"mode\": \"off\"\n                              }\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          },\n                          \"unit\": \"ms\"\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 8,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 5\n                  },\n                  \"id\": 4,\n                  \"options\": {\n                      \"alertThreshold\": true,\n                      \"legend\": {\n                          \"calcs\": [\n\n                          ],\n                          \"displayMode\": \"list\",\n                          \"placement\": \"bottom\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"hideZeros\": false,\n                          \"mode\": \"multi\",\n                          \"sort\": \"none\"\n                      }\n                  },\n                  \"pluginVersion\": \"12.0.2\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"uid\": \"$datasource\"\n                          },\n                          \"exemplar\": true,\n                          \"expr\": \"histogram_quantile(0.99, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\n                          \"interval\": \"1m\",\n                          \"legendFormat\": \"99th Percentile\",\n                          \"refId\": \"A\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"uid\": \"$datasource\"\n                          },\n                          \"exemplar\": true,\n                          \"expr\": \"histogram_quantile(0.50, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\n                          \"interval\": \"1m\",\n                          \"legendFormat\": \"50th Percentile\",\n                          \"refId\": \"B\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"uid\": \"$datasource\"\n                          },\n                          \"exemplar\": true,\n                          \"expr\": \"sum(irate(grafana_http_request_duration_seconds_sum{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) * 1 / sum(irate(grafana_http_request_duration_seconds_count{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval]))\",\n                          \"interval\": \"1m\",\n                          \"legendFormat\": \"Average\",\n                          \"refId\": \"C\"\n                      }\n                  ],\n                  \"title\": \"Request Latency\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"preload\": false,\n          \"refresh\": \"\",\n          \"schemaVersion\": 41,\n          \"tags\": [\n\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"Prometheus\",\n                          \"value\": \"prometheus\"\n                      },\n                      \"includeAll\": false,\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"current\": {\n                          \"text\": \"All\",\n                          \"value\": [\n                              \"$__all\"\n                          ]\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(grafana_build_info, job)\",\n                      \"includeAll\": true,\n                      \"multi\": true,\n                      \"name\": \"job\",\n                      \"options\": [\n\n                      ],\n                      \"query\": {\n                          \"query\": \"label_values(grafana_build_info, job)\",\n                          \"refId\": \"Billing Admin-job-Variable-Query\"\n                      },\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"current\": {\n                          \"text\": \"All\",\n                          \"value\": \"$__all\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(grafana_build_info, instance)\",\n                      \"includeAll\": true,\n                      \"multi\": true,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": {\n                          \"query\": \"label_values(grafana_build_info, instance)\",\n                          \"refId\": \"Billing Admin-instance-Variable-Query\"\n                      },\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-6h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Grafana Overview\",\n          \"uid\": \"6be0s85Mk\",\n          \"version\": 1\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-grafana-overview\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-cluster.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"cluster:node_cpu:ratio_rate5m{cluster=\\\"$cluster\\\"}\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Requests Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 8,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Limits Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"1 - sum(:node_memory_MemAvailable_bytes:sum{cluster=\\\"$cluster\\\"}) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\",cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 16,\n                      \"y\": 0\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Requests Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 20,\n                      \"y\": 0\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Limits Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 6\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\"})) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 12\n                  },\n                  \"id\": 8,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\"})) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\"})) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\"})) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"namespace\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"Time 7\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Time 7\": 6,\n                                  \"Value #A\": 8,\n                                  \"Value #B\": 9,\n                                  \"Value #C\": 10,\n                                  \"Value #D\": 11,\n                                  \"Value #E\": 12,\n                                  \"Value #F\": 13,\n                                  \"Value #G\": 14,\n                                  \"namespace\": 7\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Pods\",\n                                  \"Value #B\": \"Workloads\",\n                                  \"Value #C\": \"CPU Usage\",\n                                  \"Value #D\": \"CPU Requests\",\n                                  \"Value #E\": \"CPU Requests %\",\n                                  \"Value #F\": \"CPU Limits\",\n                                  \"Value #G\": \"CPU Limits %\",\n                                  \"namespace\": \"Namespace\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"})) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Memory Usage\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bytes\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Memory Requests\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bytes\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Memory Limits\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bytes\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 24\n                  },\n                  \"id\": 10,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"})) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"})) by (namespace) / sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"})) by (namespace) / sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Requests by Namespace\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"namespace\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"Time 7\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Time 7\": 6,\n                                  \"Value #A\": 8,\n                                  \"Value #B\": 9,\n                                  \"Value #C\": 10,\n                                  \"Value #D\": 11,\n                                  \"Value #E\": 12,\n                                  \"Value #F\": 13,\n                                  \"Value #G\": 14,\n                                  \"namespace\": 7\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Pods\",\n                                  \"Value #B\": \"Workloads\",\n                                  \"Value #C\": \"Memory Usage\",\n                                  \"Value #D\": \"Memory Requests\",\n                                  \"Value #E\": \"Memory Requests %\",\n                                  \"Value #F\": \"Memory Limits\",\n                                  \"Value #G\": \"Memory Limits %\",\n                                  \"namespace\": \"Namespace\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Bandwidth/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Packets/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"pps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 30\n                  },\n                  \"id\": 11,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval]))) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval]))) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Network Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"namespace\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"namespace\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Current Receive Bandwidth\",\n                                  \"Value #B\": \"Current Transmit Bandwidth\",\n                                  \"Value #C\": \"Rate of Received Packets\",\n                                  \"Value #D\": \"Rate of Transmitted Packets\",\n                                  \"Value #E\": \"Rate of Received Packets Dropped\",\n                                  \"Value #F\": \"Rate of Transmitted Packets Dropped\",\n                                  \"namespace\": \"Namespace\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 36\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval]))) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 42\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval]))) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 48\n                  },\n                  \"id\": 14,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"avg((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval]))) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Namespace: Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 54\n                  },\n                  \"id\": 15,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"avg((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval]))) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Namespace: Transmitted\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 60\n                  },\n                  \"id\": 16,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 66\n                  },\n                  \"id\": 17,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 72\n                  },\n                  \"id\": 18,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 78\n                  },\n                  \"id\": 19,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"iops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 84\n                  },\n                  \"id\": 20,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"ceil(sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"IOPS(Reads+Writes)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"Bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 90\n                  },\n                  \"id\": 21,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"ThroughPut(Read+Write)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/IOPS/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"iops\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Throughput/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 96\n                  },\n                  \"id\": 22,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(namespace) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(namespace) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Storage IO\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"namespace\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"namespace\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"IOPS(Reads)\",\n                                  \"Value #B\": \"IOPS(Writes)\",\n                                  \"Value #C\": \"IOPS(Reads + Writes)\",\n                                  \"Value #D\": \"Throughput(Read)\",\n                                  \"Value #E\": \"Throughput(Write)\",\n                                  \"Value #F\": \"Throughput(Read + Write)\",\n                                  \"namespace\": \"Namespace\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Cluster\",\n          \"uid\": \"efa86fd1d0c121a26444b636a3f509a8\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-cluster\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-multicluster.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(cluster:node_cpu:ratio_rate5m) / count(cluster:node_cpu:ratio_rate5m)\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Requests Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 8,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Limits Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"1 - sum(:node_memory_MemAvailable_bytes:sum) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 16,\n                      \"y\": 0\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Requests Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 20,\n                      \"y\": 0\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Limits Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m)) by (cluster)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Cluster\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down\",\n                                              \"url\": \"/d/efa86fd1d0c121a26444b636a3f509a8/kubernetes-compute-resources-cluster?${datasource:queryparam}&var-cluster=${__data.fields.Cluster}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 2\n                  },\n                  \"id\": 8,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m)) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m)) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m)) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"cluster\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"cluster\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"cluster\": \"Cluster\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 3\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"})) by (cluster)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage (w/o cache)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Cluster\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down\",\n                                              \"url\": \"/d/efa86fd1d0c121a26444b636a3f509a8/kubernetes-compute-resources-cluster?${datasource:queryparam}&var-cluster=${__data.fields.Cluster}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 4\n                  },\n                  \"id\": 10,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"})) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"})) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"})) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Requests by Cluster\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"cluster\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"cluster\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"cluster\": \"Cluster\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources /  Multi-Cluster\",\n          \"uid\": \"b59e6c9f2fcbe2e16d77fc492374cc4f\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-multicluster\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-namespace.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 6,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation (from requests)\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 6,\n                      \"x\": 6,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation (from limits)\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 6,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"})) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation (from requests)\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 0\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"})) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation (from limits)\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"B\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"C\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"orange\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.cpu\\\"}))\",\n                          \"legendFormat\": \"quota - requests\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.cpu\\\"}))\",\n                          \"legendFormat\": \"quota - limits\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 6,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"pod\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"B\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"C\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"orange\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.memory\\\"}))\",\n                          \"legendFormat\": \"quota - requests\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.memory\\\"}))\",\n                          \"legendFormat\": \"quota - limits\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage (w/o cache)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 8,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"Time 7\": true,\n                                  \"Time 8\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Time 7\": 6,\n                                  \"Time 8\": 7,\n                                  \"Value #A\": 9,\n                                  \"Value #B\": 10,\n                                  \"Value #C\": 11,\n                                  \"Value #D\": 12,\n                                  \"Value #E\": 13,\n                                  \"Value #F\": 14,\n                                  \"Value #G\": 15,\n                                  \"Value #H\": 16,\n                                  \"pod\": 8\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"Value #F\": \"Memory Usage (RSS)\",\n                                  \"Value #G\": \"Memory Usage (Cache)\",\n                                  \"Value #H\": \"Memory Usage (Swap)\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Bandwidth/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Packets/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"pps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 9,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Network Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"pod\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Current Receive Bandwidth\",\n                                  \"Value #B\": \"Current Transmit Bandwidth\",\n                                  \"Value #C\": \"Rate of Received Packets\",\n                                  \"Value #D\": \"Rate of Transmitted Packets\",\n                                  \"Value #E\": \"Rate of Received Packets Dropped\",\n                                  \"Value #F\": \"Rate of Transmitted Packets Dropped\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 42\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 42\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 49\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 49\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 56\n                  },\n                  \"id\": 14,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 56\n                  },\n                  \"id\": 15,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"iops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 63\n                  },\n                  \"id\": 16,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"ceil(sum by(pod) (rate(container_fs_reads_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"IOPS(Reads+Writes)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"Bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 63\n                  },\n                  \"id\": 17,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"ThroughPut(Read+Write)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/IOPS/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"iops\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Throughput/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 70\n                  },\n                  \"id\": 18,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Storage IO\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"pod\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"IOPS(Reads)\",\n                                  \"Value #B\": \"IOPS(Writes)\",\n                                  \"Value #C\": \"IOPS(Reads + Writes)\",\n                                  \"Value #D\": \"Throughput(Read)\",\n                                  \"Value #E\": \"Throughput(Write)\",\n                                  \"Value #F\": \"Throughput(Read + Write)\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Namespace (Pods)\",\n          \"uid\": \"85a562078cdf77779eaa1add43ccec1e\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-namespace\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-node.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true,\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          }\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"max capacity\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.stacking\",\n                                      \"value\": {\n                                          \"mode\": \"none\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.hideFrom\",\n                                      \"value\": {\n                                          \"legend\": false,\n                                          \"tooltip\": true,\n                                          \"viz\": false\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"dash\": [\n                                              10,\n                                              10\n                                          ],\n                                          \"fill\": \"dash\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"max allocatable\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"super-light-red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.stacking\",\n                                      \"value\": {\n                                          \"mode\": \"none\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.hideFrom\",\n                                      \"value\": {\n                                          \"legend\": false,\n                                          \"tooltip\": true,\n                                          \"viz\": false\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"dash\": [\n                                              10,\n                                              10\n                                          ],\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.fillOpacity\",\n                                      \"value\": 0\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", job=\\\"kube-state-metrics\\\", node=~\\\"$node\\\", resource=\\\"cpu\\\"})\",\n                          \"legendFormat\": \"max capacity\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_node_status_allocatable{cluster=\\\"$cluster\\\", job=\\\"kube-state-metrics\\\", node=~\\\"$node\\\", resource=\\\"cpu\\\"})\",\n                          \"legendFormat\": \"max allocatable\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"legendFormat\": \"{{pod}}\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 6\n                  },\n                  \"id\": 2,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true,\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"max capacity\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.stacking\",\n                                      \"value\": {\n                                          \"mode\": \"none\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.hideFrom\",\n                                      \"value\": {\n                                          \"legend\": false,\n                                          \"tooltip\": true,\n                                          \"viz\": false\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"dash\": [\n                                              10,\n                                              10\n                                          ],\n                                          \"fill\": \"dash\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"max allocatable\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"super-light-red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.stacking\",\n                                      \"value\": {\n                                          \"mode\": \"none\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.hideFrom\",\n                                      \"value\": {\n                                          \"legend\": false,\n                                          \"tooltip\": true,\n                                          \"viz\": false\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"dash\": [\n                                              10,\n                                              10\n                                          ],\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.fillOpacity\",\n                                      \"value\": 0\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 12\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", job=\\\"kube-state-metrics\\\", node=~\\\"$node\\\", resource=\\\"memory\\\"})\",\n                          \"legendFormat\": \"max capacity\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_node_status_allocatable{cluster=\\\"$cluster\\\", job=\\\"kube-state-metrics\\\", node=~\\\"$node\\\", resource=\\\"memory\\\"})\",\n                          \"legendFormat\": \"max allocatable\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", container!=\\\"\\\"})) by (pod)\",\n                          \"legendFormat\": \"{{pod}}\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage (w/cache)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true,\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"max capacity\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.stacking\",\n                                      \"value\": {\n                                          \"mode\": \"none\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.hideFrom\",\n                                      \"value\": {\n                                          \"legend\": false,\n                                          \"tooltip\": true,\n                                          \"viz\": false\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"dash\": [\n                                              10,\n                                              10\n                                          ],\n                                          \"fill\": \"dash\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"max allocatable\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"super-light-red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.stacking\",\n                                      \"value\": {\n                                          \"mode\": \"none\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.hideFrom\",\n                                      \"value\": {\n                                          \"legend\": false,\n                                          \"tooltip\": true,\n                                          \"viz\": false\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"dash\": [\n                                              10,\n                                              10\n                                          ],\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.fillOpacity\",\n                                      \"value\": 0\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", job=\\\"kube-state-metrics\\\", node=~\\\"$node\\\", resource=\\\"memory\\\"})\",\n                          \"legendFormat\": \"max capacity\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_node_status_allocatable{cluster=\\\"$cluster\\\", job=\\\"kube-state-metrics\\\", node=~\\\"$node\\\", resource=\\\"memory\\\"})\",\n                          \"legendFormat\": \"max allocatable\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_rss{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", container!=\\\"\\\"})) by (pod)\",\n                          \"legendFormat\": \"{{pod}}\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage (w/o cache)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 6,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 24\n                  },\n                  \"id\": 5,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"})) by (pod) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_rss{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_cache{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_memory_swap{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"})) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"Time 7\": true,\n                                  \"Time 8\": true\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"Value #F\": \"Memory Usage (RSS)\",\n                                  \"Value #G\": \"Memory Usage (Cache)\",\n                                  \"Value #H\": \"Memory Usage (Swap)\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"node\",\n                      \"multi\": true,\n                      \"name\": \"node\",\n                      \"query\": \"label_values(kube_node_info{cluster=\\\"$cluster\\\"}, node)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Node (Pods)\",\n          \"uid\": \"200ac8fdbfbb74b39aff88118e4d1c2c\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-node\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-pod.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"B\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"C\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"orange\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"})) by (container)\",\n                          \"legendFormat\": \"__auto\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\n                          \"legendFormat\": \"requests\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\n                          \"legendFormat\": \"limits\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"axisColorMode\": \"thresholds\",\n                              \"axisSoftMax\": 1,\n                              \"axisSoftMin\": 0,\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true,\n                              \"thresholdsStyle\": {\n                                  \"mode\": \"dashed+area\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"A\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"thresholds\",\n                                      \"value\": {\n                                          \"mode\": \"absolute\",\n                                          \"steps\": [\n                                              {\n                                                  \"color\": \"green\",\n                                                  \"value\": null\n                                              },\n                                              {\n                                                  \"color\": \"red\",\n                                                  \"value\": 0.25\n                                              }\n                                          ]\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"mode\": \"thresholds\",\n                                          \"seriesBy\": \"lastNotNull\"\n                                      }\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(increase(container_cpu_cfs_throttled_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container) /sum(increase(container_cpu_cfs_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"CPU Throttling\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 3,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\"})) by (container) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\"})) by (container) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"container\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"container\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"container\": \"Container\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"B\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"C\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"orange\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"})) by (container)\",\n                          \"legendFormat\": \"__auto\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\n                          \"legendFormat\": \"requests\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\n                          \"legendFormat\": \"limits\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage (WSS)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 5,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", image!=\\\"\\\"})) by (container) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"})) by (container) / sum(max by (cluster, namespace, pod, container)(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(max by (cluster, namespace, pod, container)(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"})) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"container\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"Time 7\": true,\n                                  \"Time 8\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Time 7\": 6,\n                                  \"Time 8\": 7,\n                                  \"Value #A\": 9,\n                                  \"Value #B\": 10,\n                                  \"Value #C\": 11,\n                                  \"Value #D\": 12,\n                                  \"Value #E\": 13,\n                                  \"Value #F\": 14,\n                                  \"Value #G\": 15,\n                                  \"Value #H\": 16,\n                                  \"container\": 8\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"Value #F\": \"Memory Usage (RSS)\",\n                                  \"Value #G\": \"Memory Usage (Cache)\",\n                                  \"Value #H\": \"Memory Usage (Swap)\",\n                                  \"container\": \"Container\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 35\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 42\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 42\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 49\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 49\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"iops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 56\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"ceil(sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"Reads\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"ceil(sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"Writes\"\n                      }\n                  ],\n                  \"title\": \"IOPS (Pod)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"Bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 56\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"Reads\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"Writes\"\n                      }\n                  ],\n                  \"title\": \"ThroughPut (Pod)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"iops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 63\n                  },\n                  \"id\": 14,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"ceil(sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"IOPS (Containers)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"Bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 63\n                  },\n                  \"id\": 15,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"ThroughPut (Containers)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/IOPS/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"iops\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Throughput/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"Bps\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 70\n                  },\n                  \"id\": 16,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(container) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\",device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(container) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Storage IO\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"container\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"container\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"IOPS(Reads)\",\n                                  \"Value #B\": \"IOPS(Writes)\",\n                                  \"Value #C\": \"IOPS(Reads + Writes)\",\n                                  \"Value #D\": \"Throughput(Read)\",\n                                  \"Value #E\": \"Throughput(Write)\",\n                                  \"Value #F\": \"Throughput(Read + Write)\",\n                                  \"container\": \"Container\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"pod\",\n                      \"name\": \"pod\",\n                      \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, pod)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Pod\",\n          \"uid\": \"6581e46e4e5c7ba40a07646395ef7b23\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-pod\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-windows-cluster.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"1 - avg(rate(windows_cpu_time_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", mode=\\\"idle\\\"}[$__rate_interval]))\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\"}) / sum(node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Requests Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 8,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\"}) / sum(node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Limits Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"1 - sum(:windows_node_memory_MemFreeCached_bytes:sum{cluster=\\\"$cluster\\\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 16,\n                      \"y\": 0\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Requests Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 3,\n                      \"w\": 4,\n                      \"x\": 20,\n                      \"y\": 0\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\\\"$cluster\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Limits Commitment\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 8,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"namespace\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"namespace\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"namespace\": \"Namespace\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"decbytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage (Private Working Set)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Memory Usage\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"decbytes\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Memory Requests\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"decbytes\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Memory Limits\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"decbytes\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 10,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Requests by Namespace\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"namespace\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"namespace\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"namespace\": \"Namespace\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Cluster(Windows)\",\n          \"uid\": \"4d08557fd9391b100730f2494bccac68\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-windows-cluster\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-windows-namespace.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 2,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"pod\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"decbytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage (Private Working Set)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 4,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"pod\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(windows_pod_container_available{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Namespace(Windows)\",\n          \"uid\": \"490b402361724ab1d4c45666c1fa9b6f\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-windows-namespace\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-windows-pod.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Namespace\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 2,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"container\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"container\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"container\": \"Container\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"decbytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 4,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"container\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"container\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"container\": \"Container\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum by (container) (rate(windows_container_network_received_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"Received : {{ container }}\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum by (container) (rate(windows_container_network_transmitted_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"Transmitted : {{ container }}\"\n                      }\n                  ],\n                  \"title\": \"Network I/O\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(windows_pod_container_available{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"pod\",\n                      \"name\": \"pod\",\n                      \"query\": \"label_values(windows_pod_container_available{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}, pod)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Pod(Windows)\",\n          \"uid\": \"40597a704a610e936dc6ed374a7ce023\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-windows-pod\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-workload.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 2,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 6,\n                                  \"Value #B\": 7,\n                                  \"Value #C\": 8,\n                                  \"Value #D\": 9,\n                                  \"Value #E\": 10,\n                                  \"pod\": 5\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"CPU Usage\",\n                                  \"Value #B\": \"CPU Requests\",\n                                  \"Value #C\": \"CPU Requests %\",\n                                  \"Value #D\": \"CPU Limits\",\n                                  \"Value #E\": \"CPU Limits %\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 4,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}\\n) by (pod)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Value #A\": 9,\n                                  \"Value #B\": 10,\n                                  \"Value #C\": 11,\n                                  \"Value #D\": 12,\n                                  \"Value #E\": 13,\n                                  \"pod\": 8\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Memory Usage\",\n                                  \"Value #B\": \"Memory Requests\",\n                                  \"Value #C\": \"Memory Requests %\",\n                                  \"Value #D\": \"Memory Limits\",\n                                  \"Value #E\": \"Memory Limits %\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Bandwidth/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Packets/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"pps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to pods\",\n                                              \"url\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 5,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Network Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"pod\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Current Receive Bandwidth\",\n                                  \"Value #B\": \"Current Transmit Bandwidth\",\n                                  \"Value #C\": \"Rate of Received Packets\",\n                                  \"Value #D\": \"Rate of Transmitted Packets\",\n                                  \"Value #E\": \"Rate of Received Packets Dropped\",\n                                  \"Value #F\": \"Rate of Transmitted Packets Dropped\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 35\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 42\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(avg((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Pod: Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 42\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(avg((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Pod: Transmitted\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 49\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 49\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 56\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 56\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"workload_type\",\n                      \"name\": \"type\",\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"workload\",\n                      \"name\": \"workload\",\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}, workload)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Workload\",\n          \"uid\": \"a164a7f0339f99e89cea5cb47e9be617\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-workload\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-workloads-namespace.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          }\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"B\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"C\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"orange\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"legendFormat\": \"{{workload}} - {{workload_type}}\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=~\\\"requests.cpu|cpu\\\"}))\",\n                          \"legendFormat\": \"quota - requests\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=~\\\"limits.cpu\\\"}))\",\n                          \"legendFormat\": \"quota - limits\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Workload\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to workloads\",\n                                              \"url\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Running Pods\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"none\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 2,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload, workload_type)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"CPU Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"workload\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"workload_type 2\": true,\n                                  \"workload_type 3\": true,\n                                  \"workload_type 4\": true,\n                                  \"workload_type 5\": true,\n                                  \"workload_type 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 8,\n                                  \"Value #B\": 9,\n                                  \"Value #C\": 10,\n                                  \"Value #D\": 11,\n                                  \"Value #E\": 12,\n                                  \"Value #F\": 13,\n                                  \"workload\": 6,\n                                  \"workload_type 1\": 7,\n                                  \"workload_type 2\": 14,\n                                  \"workload_type 3\": 15,\n                                  \"workload_type 4\": 16,\n                                  \"workload_type 5\": 17,\n                                  \"workload_type 6\": 18\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Running Pods\",\n                                  \"Value #B\": \"CPU Usage\",\n                                  \"Value #C\": \"CPU Requests\",\n                                  \"Value #D\": \"CPU Requests %\",\n                                  \"Value #E\": \"CPU Limits\",\n                                  \"Value #F\": \"CPU Limits %\",\n                                  \"workload\": \"Workload\",\n                                  \"workload_type 1\": \"Type\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"B\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"red\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byFrameRefID\",\n                                  \"options\": \"C\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.lineStyle\",\n                                      \"value\": {\n                                          \"fill\": \"dash\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"custom.lineWidth\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"color\",\n                                      \"value\": {\n                                          \"fixedColor\": \"orange\",\n                                          \"mode\": \"fixed\"\n                                      }\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"legendFormat\": \"{{workload}} - {{workload_type}}\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=~\\\"requests.memory|memory\\\"}))\",\n                          \"legendFormat\": \"quota - requests\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"scalar(max(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=~\\\"limits.memory\\\"}))\",\n                          \"legendFormat\": \"quota - limits\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/%/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Workload\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to workloads\",\n                                              \"url\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Running Pods\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"none\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 4,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload, workload_type)\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(\\n    max by (cluster, namespace, pod, container)(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"})\\n  * on(cluster, namespace, pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  max by (cluster, namespace, pod, container)(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\\n* on(cluster, namespace, pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Memory Quota\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"workload\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"workload_type 2\": true,\n                                  \"workload_type 3\": true,\n                                  \"workload_type 4\": true,\n                                  \"workload_type 5\": true,\n                                  \"workload_type 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 8,\n                                  \"Value #B\": 9,\n                                  \"Value #C\": 10,\n                                  \"Value #D\": 11,\n                                  \"Value #E\": 12,\n                                  \"Value #F\": 13,\n                                  \"workload\": 6,\n                                  \"workload_type 1\": 7,\n                                  \"workload_type 2\": 14,\n                                  \"workload_type 3\": 15,\n                                  \"workload_type 4\": 16,\n                                  \"workload_type 5\": 17,\n                                  \"workload_type 6\": 18\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Running Pods\",\n                                  \"Value #B\": \"Memory Usage\",\n                                  \"Value #C\": \"Memory Requests\",\n                                  \"Value #D\": \"Memory Requests %\",\n                                  \"Value #E\": \"Memory Limits\",\n                                  \"Value #F\": \"Memory Limits %\",\n                                  \"workload\": \"Workload\",\n                                  \"workload_type 1\": \"Type\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Bandwidth/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Packets/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"pps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Workload\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down to workloads\",\n                                              \"url\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 5,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Network Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"workload\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"workload\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Current Receive Bandwidth\",\n                                  \"Value #B\": \"Current Transmit Bandwidth\",\n                                  \"Value #C\": \"Rate of Received Packets\",\n                                  \"Value #D\": \"Rate of Transmitted Packets\",\n                                  \"Value #E\": \"Rate of Received Packets Dropped\",\n                                  \"Value #F\": \"Rate of Transmitted Packets Dropped\",\n                                  \"workload\": \"Workload\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 35\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 42\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(avg((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Workload: Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 42\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(avg((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Workload: Transmitted\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 49\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 49\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 56\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 56\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"workload_type\",\n                      \"name\": \"type\",\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Namespace (Workloads)\",\n          \"uid\": \"a87fb0d919ec0ea5f6543124e16c42a5\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-resources-workloads-namespace\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-windows-cluster-rsrc-use.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_cpu_utilisation:avg1m{cluster=\\\"$cluster\\\"} * node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"} / scalar(sum(node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"}))\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_memory_utilisation:ratio{cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 7\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_memory_swap_io_pages:irate{cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Memory Saturation (Swap I/O Pages)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_disk_utilisation:avg_irate{cluster=\\\"$cluster\\\"} / scalar(node:windows_node:sum{cluster=\\\"$cluster\\\"})\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Disk IO Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_net_utilisation:sum_irate{cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Net Utilisation (Transmitted)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 21\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_net_saturation:sum_irate{cluster=\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Net Utilisation (Dropped)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (instance)(node:windows_node_filesystem_usage:{cluster=\\\"$cluster\\\"})\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Disk Capacity\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / USE Method / Cluster(Windows)\",\n          \"uid\": \"53a43377ec9aaf2ff64dfc7a1f539334\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-windows-cluster-rsrc-use\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-windows-node-rsrc-use.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_cpu_utilisation:avg1m{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\n                          \"legendFormat\": \"Utilisation\"\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (core) (irate(windows_cpu_time_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", mode!=\\\"idle\\\", instance=\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"{{core}}\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage Per Core\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_memory_utilisation:{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\n                          \"legendFormat\": \"Memory\"\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation %\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 7\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max(\\n  windows_os_visible_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}\\n  - windows_memory_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\n                          \"legendFormat\": \"memory used\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max(node:windows_node_memory_totalCached_bytes:sum{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"})\",\n                          \"legendFormat\": \"memory cached\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max(windows_memory_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"})\",\n                          \"legendFormat\": \"memory free\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 7\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_memory_swap_io_pages:irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\n                          \"legendFormat\": \"Swap IO\"\n                      }\n                  ],\n                  \"title\": \"Memory Saturation (Swap I/O) Pages\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_disk_utilisation:avg_irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\n                          \"legendFormat\": \"Utilisation\"\n                      }\n                  ],\n                  \"title\": \"Disk IO Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/io time/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"ms\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 14\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max(rate(windows_logical_disk_read_bytes_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"read\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max(rate(windows_logical_disk_write_bytes_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"written\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max(rate(windows_logical_disk_read_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\",  instance=\\\"$instance\\\"}[$__rate_interval]) + rate(windows_logical_disk_write_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"io time\"\n                      }\n                  ],\n                  \"title\": \"Disk IO\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_filesystem_usage:{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{volume}}\"\n                      }\n                  ],\n                  \"title\": \"Disk Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_net_utilisation:sum_irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\n                          \"legendFormat\": \"Utilisation\"\n                      }\n                  ],\n                  \"title\": \"Net Utilisation (Transmitted)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 28\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"node:windows_node_net_saturation:sum_irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\n                          \"legendFormat\": \"Saturation\"\n                      }\n                  ],\n                  \"title\": \"Net Saturation (Dropped)\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(windows_system_boot_time_timestamp_seconds{cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / USE Method / Node(Windows)\",\n          \"uid\": \"96e7484b0bb53b74fbc2bcb7723cd40b\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-k8s-windows-node-rsrc-use\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    kubelet.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kubelet_node_name{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Running Kubelets\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kubelet_running_pods{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Running Pods\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 8,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(kubelet_running_containers{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Running Containers\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\", state=\\\"actual_state_of_world\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Actual Volume Count\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 16,\n                      \"y\": 0\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",state=\\\"desired_state_of_world\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Desired Volume Count\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 20,\n                      \"y\": 0\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubelet_node_config_error{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Config Error Count\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubelet_runtime_operations_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (operation_type, instance)\",\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\"\n                      }\n                  ],\n                  \"title\": \"Operation Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 7\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubelet_runtime_operations_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\"\n                      }\n                  ],\n                  \"title\": \"Operation Error Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_runtime_operations_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\"\n                      }\n                  ],\n                  \"title\": \"Operation Duration 99th quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubelet_pod_start_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                          \"legendFormat\": \"{{instance}} pod\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubelet_pod_worker_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                          \"legendFormat\": \"{{instance}} worker\"\n                      }\n                  ],\n                  \"title\": \"Pod Start Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 21\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pod_start_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"legendFormat\": \"{{instance}} pod\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"legendFormat\": \"{{instance}} worker\"\n                      }\n                  ],\n                  \"title\": \"Pod Start Duration\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 12,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(storage_operation_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\n                          \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\"\n                      }\n                  ],\n                  \"title\": \"Storage Operation Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 28\n                  },\n                  \"id\": 13,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(storage_operation_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\n                          \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\"\n                      }\n                  ],\n                  \"title\": \"Storage Operation Error Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 14,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(storage_operation_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin, le))\",\n                          \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\"\n                      }\n                  ],\n                  \"title\": \"Storage Operation Duration 99th quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 42\n                  },\n                  \"id\": 15,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubelet_cgroup_manager_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\n                          \"legendFormat\": \"{{operation_type}}\"\n                      }\n                  ],\n                  \"title\": \"Cgroup manager operation rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 42\n                  },\n                  \"id\": 16,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_cgroup_manager_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\"\n                      }\n                  ],\n                  \"title\": \"Cgroup manager 99th quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 49\n                  },\n                  \"id\": 17,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubelet_pleg_relist_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"PLEG relist rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 49\n                  },\n                  \"id\": 18,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_interval_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"PLEG relist interval\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 56\n                  },\n                  \"id\": 19,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"PLEG relist duration\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 63\n                  },\n                  \"id\": 20,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"2xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"3xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"4xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"5xx\"\n                      }\n                  ],\n                  \"title\": \"RPC rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 70\n                  },\n                  \"id\": 21,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, verb, le))\",\n                          \"legendFormat\": \"{{instance}} {{verb}}\"\n                      }\n                  ],\n                  \"title\": \"Request duration 99th quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 77\n                  },\n                  \"id\": 22,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 77\n                  },\n                  \"id\": 23,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"CPU usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 77\n                  },\n                  \"id\": 24,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Goroutines\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Kubelet\",\n          \"uid\": \"3138fa155d5915769fbded898ac09fd9\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-kubelet\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    namespace-by-pod.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"displayName\": \"$namespace\",\n                          \"max\": 10000000000,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"dark-green\",\n                                      \"index\": 0,\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"color\": \"dark-yellow\",\n                                      \"index\": 1,\n                                      \"value\": 5000000000\n                                  },\n                                  {\n                                      \"color\": \"dark-red\",\n                                      \"index\": 2,\n                                      \"value\": 7000000000\n                                  }\n                              ]\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Received\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"displayName\": \"$namespace\",\n                          \"max\": 10000000000,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"dark-green\",\n                                      \"index\": 0,\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"color\": \"dark-yellow\",\n                                      \"index\": 1,\n                                      \"value\": 5000000000\n                                  },\n                                  {\n                                      \"color\": \"dark-red\",\n                                      \"index\": 2,\n                                      \"value\": 7000000000\n                                  }\n                              ]\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Transmitted\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Bandwidth/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Packets/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"pps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Pod\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down\",\n                                              \"url\": \"/d/7a18067ce943a40ae25454675c19ff5c/kubernetes-networking-pod?${datasource:queryparam}&var-cluster=${cluster}&var-namespace=${namespace}&var-pod=${__data.fields.Pod}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 3,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Network Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"pod\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Value #A\": 7,\n                                  \"Value #B\": 8,\n                                  \"Value #C\": 9,\n                                  \"Value #D\": 10,\n                                  \"Value #E\": 11,\n                                  \"Value #F\": 12,\n                                  \"pod\": 6\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Current Receive Bandwidth\",\n                                  \"Value #B\": \"Current Transmit Bandwidth\",\n                                  \"Value #C\": \"Rate of Received Packets\",\n                                  \"Value #D\": \"Rate of Transmitted Packets\",\n                                  \"Value #E\": \"Rate of Received Packets Dropped\",\n                                  \"Value #F\": \"Rate of Transmitted Packets Dropped\",\n                                  \"pod\": \"Pod\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 18\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 36\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace!=\\\"\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 36\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum by (pod) (\\n    rate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n  * on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n)\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Namespace (Pods)\",\n          \"uid\": \"8b7a8b326d7a6f1f04244066368c67af\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-namespace-by-pod\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    namespace-by-workload.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"fixedColor\": \"green\",\n                              \"mode\": \"fixed\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"displayMode\": \"basic\",\n                      \"showUnfilled\": false\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Received\",\n                  \"type\": \"bargauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"fixedColor\": \"green\",\n                              \"mode\": \"fixed\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"displayMode\": \"basic\",\n                      \"showUnfilled\": false\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Transmitted\",\n                  \"type\": \"bargauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Bits/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Packets/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"pps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Workload\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"links\",\n                                      \"value\": [\n                                          {\n                                              \"title\": \"Drill down\",\n                                              \"url\": \"/d/728bf77cc1166d2f3133bf25846876cc/kubernetes-networking-workload?${datasource:queryparam}&var-cluster=${cluster}&var-namespace=${namespace}&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}\"\n                                          }\n                                      ]\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 3,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  sum by (workload, workload_type) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  sum by (workload, workload_type) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  avg by (workload, workload_type) (\\n    (8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  avg by (workload, workload_type) (\\n    (8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  sum by (workload, workload_type) (\\n    (1 * rate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  sum by (workload, workload_type) (\\n    (1 * rate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  sum by (workload, workload_type) (\\n    (1 * rate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(\\n  sum by (workload, workload_type) (\\n    (1 * rate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n    * on (cluster, namespace, pod) group_left\\n    kube_pod_info{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\",host_network=\\\"false\\\"}\\n    * on (cluster, namespace, pod) group_left (workload, workload_type)\\n    namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}\\n  )\\n)\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Current Status\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"joinByField\",\n                          \"options\": {\n                              \"byField\": \"workload\",\n                              \"mode\": \"outer\"\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Time 1\": true,\n                                  \"Time 2\": true,\n                                  \"Time 3\": true,\n                                  \"Time 4\": true,\n                                  \"Time 5\": true,\n                                  \"Time 6\": true,\n                                  \"Time 7\": true,\n                                  \"Time 8\": true,\n                                  \"workload_type 2\": true,\n                                  \"workload_type 3\": true,\n                                  \"workload_type 4\": true,\n                                  \"workload_type 5\": true,\n                                  \"workload_type 6\": true,\n                                  \"workload_type 7\": true,\n                                  \"workload_type 8\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time 1\": 0,\n                                  \"Time 2\": 1,\n                                  \"Time 3\": 2,\n                                  \"Time 4\": 3,\n                                  \"Time 5\": 4,\n                                  \"Time 6\": 5,\n                                  \"Time 7\": 6,\n                                  \"Time 8\": 7,\n                                  \"Value #A\": 10,\n                                  \"Value #B\": 11,\n                                  \"Value #C\": 12,\n                                  \"Value #D\": 13,\n                                  \"Value #E\": 14,\n                                  \"Value #F\": 15,\n                                  \"Value #G\": 16,\n                                  \"Value #H\": 17,\n                                  \"workload\": 8,\n                                  \"workload_type 1\": 9,\n                                  \"workload_type 2\": 18,\n                                  \"workload_type 3\": 19,\n                                  \"workload_type 4\": 20,\n                                  \"workload_type 5\": 21,\n                                  \"workload_type 6\": 22,\n                                  \"workload_type 7\": 23,\n                                  \"workload_type 8\": 24\n                              },\n                              \"renameByName\": {\n                                  \"Value #A\": \"Rx Bits\",\n                                  \"Value #B\": \"Tx Bits\",\n                                  \"Value #C\": \"Rx Bits (Avg)\",\n                                  \"Value #D\": \"Tx Bits (Avg)\",\n                                  \"Value #E\": \"Rx Packets\",\n                                  \"Value #F\": \"Tx Packets\",\n                                  \"Value #G\": \"Rx Packets Dropped\",\n                                  \"Value #H\": \"Tx Packets Dropped\",\n                                  \"workload\": \"Workload\",\n                                  \"workload_type 1\": \"Type\"\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 18\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(avg((8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Workload: Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(avg((8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Container Bandwidth by Workload: Transmitted\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 36\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 36\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 45\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 45\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster,namespace,pod) group_left ()\\n    topk by (cluster,namespace,pod) (\\n      1,\\n      max by (cluster,namespace,pod) (kube_pod_info{host_network=\\\"false\\\"})\\n    )\\n* on (cluster,namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=~\\\"$type\\\"}) by (workload))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"workload_type\",\n                      \"name\": \"type\",\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Namespace (Workload)\",\n          \"uid\": \"bbb2a765a623ae38130206c7d94a160f\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-namespace-by-workload\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    node-cluster-rsrc-use.json: |-\n      {\n          \"graphTooltip\": 1,\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"CPU\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"((\\n  instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}\\n  *\\n  instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}\\n) != 0 )\\n/ scalar(sum(instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}))\\n\",\n                          \"legendFormat\": \"{{ instance }}\"\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n  instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}\\n  / scalar(count(instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}))\\n)  != 0\\n\",\n                          \"legendFormat\": \"{{ instance }}\"\n                      }\n                  ],\n                  \"title\": \"CPU Saturation (Load1 per CPU)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 4,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n  instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}\\n  / scalar(count(instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}))\\n) != 0\\n\",\n                          \"legendFormat\": \"{{ instance }}\"\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"rds\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 9\n                  },\n                  \"id\": 6,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"{{ instance }}\"\n                      }\n                  ],\n                  \"title\": \"Memory Saturation (Major Page Faults)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 16\n                  },\n                  \"id\": 7,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Network\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"Bps\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Transmit/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.transform\",\n                                      \"value\": \"negative-Y\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 17\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_receive_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"{{ instance }} Receive\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"{{ instance }} Transmit\"\n                      }\n                  ],\n                  \"title\": \"Network Utilisation (Bytes Receive/Transmit)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"Bps\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Transmit/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.transform\",\n                                      \"value\": \"negative-Y\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 17\n                  },\n                  \"id\": 9,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_receive_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"{{ instance }} Receive\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_transmit_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"{{ instance }} Transmit\"\n                      }\n                  ],\n                  \"title\": \"Network Saturation (Drops Receive/Transmit)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 24\n                  },\n                  \"id\": 10,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Disk IO\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 25\n                  },\n                  \"id\": 11,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}\\n/ scalar(count(instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}))\\n\",\n                          \"legendFormat\": \"{{ instance }} {{device}}\"\n                      }\n                  ],\n                  \"title\": \"Disk IO Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 25\n                  },\n                  \"id\": 12,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}\\n/ scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}))\\n\",\n                          \"legendFormat\": \"{{ instance }} {{device}}\"\n                      }\n                  ],\n                  \"title\": \"Disk IO Saturation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 34\n                  },\n                  \"id\": 13,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Disk Space\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 14,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum without (device) (\\n  max without (fstype, mountpoint) ((\\n    node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=~\\\"$cluster\\\"}\\n    -\\n    node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=~\\\"$cluster\\\"}\\n  ) != 0)\\n)\\n/ scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=~\\\"$cluster\\\"})))\\n\",\n                          \"legendFormat\": \"{{ instance }}\"\n                      }\n                  ],\n                  \"title\": \"Disk Space Utilisation\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"30s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 2,\n                      \"includeAll\": true,\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(node_time_seconds, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / USE Method / Cluster\",\n          \"uid\": \"3e97d1d02672cdd0861f4c97c64f89b2\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-node-cluster-rsrc-use\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    node-rsrc-use.json: |-\n      {\n          \"graphTooltip\": 1,\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"CPU\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Utilisation\"\n                      }\n                  ],\n                  \"title\": \"CPU Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Saturation\"\n                      }\n                  ],\n                  \"title\": \"CPU Saturation (Load1 per CPU)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 4,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Utilisation\"\n                      }\n                  ],\n                  \"title\": \"Memory Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"rds\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 9\n                  },\n                  \"id\": 6,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Major page Faults\"\n                      }\n                  ],\n                  \"title\": \"Memory Saturation (Major Page Faults)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 16\n                  },\n                  \"id\": 7,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Network\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"Bps\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Transmit/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.transform\",\n                                      \"value\": \"negative-Y\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 17\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_receive_bytes_physical:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Receive\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_transmit_bytes_physical:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Transmit\"\n                      }\n                  ],\n                  \"title\": \"Network Utilisation (Bytes Receive/Transmit)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"Bps\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/Transmit/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.transform\",\n                                      \"value\": \"negative-Y\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 17\n                  },\n                  \"id\": 9,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_receive_drop_physical:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Receive\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance:node_network_transmit_drop_physical:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"Transmit\"\n                      }\n                  ],\n                  \"title\": \"Network Saturation (Drops Receive/Transmit)\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 24\n                  },\n                  \"id\": 10,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Disk IO\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 25\n                  },\n                  \"id\": 11,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Disk IO Utilisation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 25\n                  },\n                  \"id\": 12,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} != 0\",\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Disk IO Saturation\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 34\n                  },\n                  \"id\": 13,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Disk Space\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 14,\n                  \"options\": {\n                      \"legend\": {\n                          \"showLegend\": false\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sort_desc(1 -\\n  (\\n    max without (mountpoint, fstype) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n    /\\n    max without (mountpoint, fstype) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n  ) != 0\\n)\\n\",\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Disk Space Utilisation\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"30s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 2,\n                      \"includeAll\": true,\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(node_time_seconds, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(node_exporter_build_info{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / USE Method / Node\",\n          \"uid\": \"fac67cfbe174d3ef53eb473d73d9212f\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-node-rsrc-use\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    nodes-aix.json: |-\n      {\n          \"graphTooltip\": 1,\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"CPU\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"max\": 1,\n                          \"min\": 0,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n)\\n\",\n                          \"intervalFactor\": 5,\n                          \"legendFormat\": \"{{cpu}}\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"1m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"5m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"15m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", mode=\\\"idle\\\"})\",\n                          \"legendFormat\": \"logical cores\"\n                      }\n                  ],\n                  \"title\": \"Load Average\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 4,\n                  \"title\": \"Memory\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"none\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 18,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"Physical Memory\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n    node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} -\\n    node_memory_available_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\\n)\\n\",\n                          \"legendFormat\": \"Memory Used\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"max\": 100,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"rgba(50, 172, 45, 0.97)\"\n                                  },\n                                  {\n                                      \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                      \"value\": 80\n                                  },\n                                  {\n                                      \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                      \"value\": 90\n                                  }\n                              ]\n                          },\n                          \"unit\": \"percent\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 9\n                  },\n                  \"id\": 6,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"100 -\\n(\\n  avg(node_memory_available_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}) /\\n  avg(node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n  * 100\\n)\\n\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 7,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Disk\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/ read| written/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"Bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/ io time/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 19\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} read\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} written\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} io time\"\n                      }\n                  ],\n                  \"title\": \"Disk I/O\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"yellow\",\n                                      \"value\": 0.8\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 0.9\n                                  }\n                              ]\n                          },\n                          \"unit\": \"decbytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Mounted on\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 260\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Size\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 93\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Used\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 72\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Available\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 88\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Used, %\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  },\n                                  {\n                                      \"id\": \"custom.cellOptions\",\n                                      \"value\": {\n                                          \"type\": \"gauge\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"max\",\n                                      \"value\": 1\n                                  },\n                                  {\n                                      \"id\": \"min\",\n                                      \"value\": 0\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 19\n                  },\n                  \"id\": 9,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      }\n                  ],\n                  \"title\": \"Disk Space Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"groupBy\",\n                          \"options\": {\n                              \"fields\": {\n                                  \"Value #A\": {\n                                      \"aggregations\": [\n                                          \"lastNotNull\"\n                                      ],\n                                      \"operation\": \"aggregate\"\n                                  },\n                                  \"Value #B\": {\n                                      \"aggregations\": [\n                                          \"lastNotNull\"\n                                      ],\n                                      \"operation\": \"aggregate\"\n                                  },\n                                  \"mountpoint\": {\n                                      \"aggregations\": [\n\n                                      ],\n                                      \"operation\": \"groupby\"\n                                  }\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"merge\"\n                      },\n                      {\n                          \"id\": \"calculateField\",\n                          \"options\": {\n                              \"alias\": \"Used\",\n                              \"binary\": {\n                                  \"left\": \"Value #A (lastNotNull)\",\n                                  \"operator\": \"-\",\n                                  \"reducer\": \"sum\",\n                                  \"right\": \"Value #B (lastNotNull)\"\n                              },\n                              \"mode\": \"binary\",\n                              \"reduce\": {\n                                  \"reducer\": \"sum\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"calculateField\",\n                          \"options\": {\n                              \"alias\": \"Used, %\",\n                              \"binary\": {\n                                  \"left\": \"Used\",\n                                  \"operator\": \"/\",\n                                  \"reducer\": \"sum\",\n                                  \"right\": \"Value #A (lastNotNull)\"\n                              },\n                              \"mode\": \"binary\",\n                              \"reduce\": {\n                                  \"reducer\": \"sum\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n\n                              },\n                              \"indexByName\": {\n\n                              },\n                              \"renameByName\": {\n                                  \"Value #A (lastNotNull)\": \"Size\",\n                                  \"Value #B (lastNotNull)\": \"Available\",\n                                  \"mountpoint\": \"Mounted on\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"sortBy\",\n                          \"options\": {\n                              \"fields\": {\n\n                              },\n                              \"sort\": [\n                                  {\n                                      \"field\": \"Mounted on\"\n                                  }\n                              ]\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 26\n                  },\n                  \"id\": 10,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Network\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"description\": \"Network received (bits/s)\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 11,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Network Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"description\": \"Network transmitted (bits/s)\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 12,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Network Transmitted\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"30s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 2,\n                      \"includeAll\": true,\n                      \"label\": \"Cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname!=\\\"Darwin\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"label\": \"Instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\", sysname!=\\\"Darwin\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / AIX\",\n          \"uid\": \"7e0a61e486f727d763fb1d86fdd629c2\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-nodes-aix\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    nodes-darwin.json: |-\n      {\n          \"graphTooltip\": 1,\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"CPU\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"max\": 1,\n                          \"min\": 0,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n)\\n\",\n                          \"intervalFactor\": 5,\n                          \"legendFormat\": \"{{cpu}}\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"1m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"5m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"15m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", mode=\\\"idle\\\"})\",\n                          \"legendFormat\": \"logical cores\"\n                      }\n                  ],\n                  \"title\": \"Load Average\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 4,\n                  \"title\": \"Memory\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"none\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 18,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"Physical Memory\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} +\\n    node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} +\\n    node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\\n)\\n\",\n                          \"legendFormat\": \"Memory Used\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\\n)\\n\",\n                          \"legendFormat\": \"App Memory\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"Wired Memory\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"Compressed\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"max\": 100,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"rgba(50, 172, 45, 0.97)\"\n                                  },\n                                  {\n                                      \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                      \"value\": 80\n                                  },\n                                  {\n                                      \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                      \"value\": 90\n                                  }\n                              ]\n                          },\n                          \"unit\": \"percent\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 9\n                  },\n                  \"id\": 6,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n    (\\n      avg(node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}) -\\n      avg(node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}) +\\n      avg(node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}) +\\n      avg(node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n    ) /\\n    avg(node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n)\\n*\\n100\\n\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 7,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Disk\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/ read| written/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"Bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/ io time/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 19\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} read\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} written\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} io time\"\n                      }\n                  ],\n                  \"title\": \"Disk I/O\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"yellow\",\n                                      \"value\": 0.8\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 0.9\n                                  }\n                              ]\n                          },\n                          \"unit\": \"decbytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Mounted on\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 260\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Size\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 93\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Used\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 72\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Available\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 88\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Used, %\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  },\n                                  {\n                                      \"id\": \"custom.cellOptions\",\n                                      \"value\": {\n                                          \"type\": \"gauge\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"max\",\n                                      \"value\": 1\n                                  },\n                                  {\n                                      \"id\": \"min\",\n                                      \"value\": 0\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 19\n                  },\n                  \"id\": 9,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      }\n                  ],\n                  \"title\": \"Disk Space Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"groupBy\",\n                          \"options\": {\n                              \"fields\": {\n                                  \"Value #A\": {\n                                      \"aggregations\": [\n                                          \"lastNotNull\"\n                                      ],\n                                      \"operation\": \"aggregate\"\n                                  },\n                                  \"Value #B\": {\n                                      \"aggregations\": [\n                                          \"lastNotNull\"\n                                      ],\n                                      \"operation\": \"aggregate\"\n                                  },\n                                  \"mountpoint\": {\n                                      \"aggregations\": [\n\n                                      ],\n                                      \"operation\": \"groupby\"\n                                  }\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"merge\"\n                      },\n                      {\n                          \"id\": \"calculateField\",\n                          \"options\": {\n                              \"alias\": \"Used\",\n                              \"binary\": {\n                                  \"left\": \"Value #A (lastNotNull)\",\n                                  \"operator\": \"-\",\n                                  \"reducer\": \"sum\",\n                                  \"right\": \"Value #B (lastNotNull)\"\n                              },\n                              \"mode\": \"binary\",\n                              \"reduce\": {\n                                  \"reducer\": \"sum\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"calculateField\",\n                          \"options\": {\n                              \"alias\": \"Used, %\",\n                              \"binary\": {\n                                  \"left\": \"Used\",\n                                  \"operator\": \"/\",\n                                  \"reducer\": \"sum\",\n                                  \"right\": \"Value #A (lastNotNull)\"\n                              },\n                              \"mode\": \"binary\",\n                              \"reduce\": {\n                                  \"reducer\": \"sum\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n\n                              },\n                              \"indexByName\": {\n\n                              },\n                              \"renameByName\": {\n                                  \"Value #A (lastNotNull)\": \"Size\",\n                                  \"Value #B (lastNotNull)\": \"Available\",\n                                  \"mountpoint\": \"Mounted on\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"sortBy\",\n                          \"options\": {\n                              \"fields\": {\n\n                              },\n                              \"sort\": [\n                                  {\n                                      \"field\": \"Mounted on\"\n                                  }\n                              ]\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 26\n                  },\n                  \"id\": 10,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Network\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"description\": \"Network received (bits/s)\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 11,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Network Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"description\": \"Network transmitted (bits/s)\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 12,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Network Transmitted\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"30s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 2,\n                      \"includeAll\": true,\n                      \"label\": \"Cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname=\\\"Darwin\\\"},  cluster)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"label\": \"Instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\", sysname=\\\"Darwin\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / MacOS\",\n          \"uid\": \"629701ea43bf69291922ea45f4a87d37\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-nodes-darwin\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    nodes.json: |-\n      {\n          \"graphTooltip\": 1,\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"CPU\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"max\": 1,\n                          \"min\": 0,\n                          \"unit\": \"percentunit\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n)\\n\",\n                          \"intervalFactor\": 5,\n                          \"legendFormat\": \"{{cpu}}\"\n                      }\n                  ],\n                  \"title\": \"CPU Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"1m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"5m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"15m load average\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", mode=\\\"idle\\\"})\",\n                          \"legendFormat\": \"logical cores\"\n                      }\n                  ],\n                  \"title\": \"Load Average\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 4,\n                  \"title\": \"Memory\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 18,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n  node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\\n-\\n  node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\\n-\\n  node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\\n-\\n  node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\\n)\\n\",\n                          \"legendFormat\": \"memory used\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"memory buffers\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"memory cached\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}\",\n                          \"legendFormat\": \"memory free\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"max\": 100,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"rgba(50, 172, 45, 0.97)\"\n                                  },\n                                  {\n                                      \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                      \"value\": 80\n                                  },\n                                  {\n                                      \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                      \"value\": 90\n                                  }\n                              ]\n                          },\n                          \"unit\": \"percent\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 9\n                  },\n                  \"id\": 6,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"100 -\\n(\\n  avg(node_memory_MemAvailable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"}) /\\n  avg(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\"})\\n* 100\\n)\\n\"\n                      }\n                  ],\n                  \"title\": \"Memory Usage\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 7,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Disk\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/ read| written/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"Bps\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byRegexp\",\n                                  \"options\": \"/ io time/\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 19\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} read\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} written\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}} io time\"\n                      }\n                  ],\n                  \"title\": \"Disk I/O\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\"\n                                  },\n                                  {\n                                      \"color\": \"yellow\",\n                                      \"value\": 0.8\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 0.9\n                                  }\n                              ]\n                          },\n                          \"unit\": \"decbytes\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Mounted on\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 260\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Size\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 93\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Used\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 72\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Available\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.width\",\n                                      \"value\": 88\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Used, %\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"percentunit\"\n                                  },\n                                  {\n                                      \"id\": \"custom.cellOptions\",\n                                      \"value\": {\n                                          \"type\": \"gauge\"\n                                      }\n                                  },\n                                  {\n                                      \"id\": \"max\",\n                                      \"value\": 1\n                                  },\n                                  {\n                                      \"id\": \"min\",\n                                      \"value\": 0\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 19\n                  },\n                  \"id\": 9,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      }\n                  ],\n                  \"title\": \"Disk Space Usage\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"groupBy\",\n                          \"options\": {\n                              \"fields\": {\n                                  \"Value #A\": {\n                                      \"aggregations\": [\n                                          \"lastNotNull\"\n                                      ],\n                                      \"operation\": \"aggregate\"\n                                  },\n                                  \"Value #B\": {\n                                      \"aggregations\": [\n                                          \"lastNotNull\"\n                                      ],\n                                      \"operation\": \"aggregate\"\n                                  },\n                                  \"mountpoint\": {\n                                      \"aggregations\": [\n\n                                      ],\n                                      \"operation\": \"groupby\"\n                                  }\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"merge\"\n                      },\n                      {\n                          \"id\": \"calculateField\",\n                          \"options\": {\n                              \"alias\": \"Used\",\n                              \"binary\": {\n                                  \"left\": \"Value #A (lastNotNull)\",\n                                  \"operator\": \"-\",\n                                  \"reducer\": \"sum\",\n                                  \"right\": \"Value #B (lastNotNull)\"\n                              },\n                              \"mode\": \"binary\",\n                              \"reduce\": {\n                                  \"reducer\": \"sum\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"calculateField\",\n                          \"options\": {\n                              \"alias\": \"Used, %\",\n                              \"binary\": {\n                                  \"left\": \"Used\",\n                                  \"operator\": \"/\",\n                                  \"reducer\": \"sum\",\n                                  \"right\": \"Value #A (lastNotNull)\"\n                              },\n                              \"mode\": \"binary\",\n                              \"reduce\": {\n                                  \"reducer\": \"sum\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n\n                              },\n                              \"indexByName\": {\n\n                              },\n                              \"renameByName\": {\n                                  \"Value #A (lastNotNull)\": \"Size\",\n                                  \"Value #B (lastNotNull)\": \"Available\",\n                                  \"mountpoint\": \"Mounted on\"\n                              }\n                          }\n                      },\n                      {\n                          \"id\": \"sortBy\",\n                          \"options\": {\n                              \"fields\": {\n\n                              },\n                              \"sort\": [\n                                  {\n                                      \"field\": \"Mounted on\"\n                                  }\n                              ]\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 26\n                  },\n                  \"id\": 10,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Network\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"description\": \"Network received (bits/s)\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 11,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Network Received\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"${datasource}\"\n                  },\n                  \"description\": \"Network transmitted (bits/s)\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0\n                          },\n                          \"min\": 0,\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 12,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=~\\\"$cluster\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{device}}\"\n                      }\n                  ],\n                  \"title\": \"Network Transmitted\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"30s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 2,\n                      \"includeAll\": true,\n                      \"label\": \"Cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname!=\\\"Darwin\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"label\": \"Instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", cluster=~\\\"$cluster\\\", sysname!=\\\"Darwin\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / Nodes\",\n          \"uid\": \"7d57716318ee0dddbac5a7f451fb7753\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-nodes\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    persistentvolumesusage.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 18,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\n                          \"legendFormat\": \"Used Space\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n\",\n                          \"legendFormat\": \"Free Space\"\n                      }\n                  ],\n                  \"title\": \"Volume Space Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"mode\": \"thresholds\"\n                          },\n                          \"max\": 100,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\",\n                                      \"value\": 0\n                                  },\n                                  {\n                                      \"color\": \"orange\",\n                                      \"value\": 80\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 90\n                                  }\n                              ]\n                          },\n                          \"unit\": \"percent\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max without(instance,node) (\\n(\\n  topk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n  -\\n  topk(1, kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n)\\n/\\ntopk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Volume Space Usage\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 18,\n                      \"y\": 7\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\",\n                          \"legendFormat\": \"Used inodes\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\n                          \"legendFormat\": \"Free inodes\"\n                      }\n                  ],\n                  \"title\": \"Volume inodes Usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"mode\": \"thresholds\"\n                          },\n                          \"max\": 100,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\",\n                                      \"value\": 0\n                                  },\n                                  {\n                                      \"color\": \"orange\",\n                                      \"value\": 80\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 90\n                                  }\n                              ]\n                          },\n                          \"unit\": \"percent\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 7\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"max without(instance,node) (\\ntopk(1, kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n/\\ntopk(1, kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Volume inodes Usage\",\n                  \"type\": \"gauge\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"PersistentVolumeClaim\",\n                      \"name\": \"volume\",\n                      \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\"}, persistentvolumeclaim)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Persistent Volumes\",\n          \"uid\": \"919b92a8e8041bd567af9edab12c840c\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-persistentvolumesusage\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    pod-total.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"displayName\": \"$pod\",\n                          \"max\": 10000000000,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"dark-green\",\n                                      \"index\": 0,\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"color\": \"dark-yellow\",\n                                      \"index\": 1,\n                                      \"value\": 5000000000\n                                  },\n                                  {\n                                      \"color\": \"dark-red\",\n                                      \"index\": 2,\n                                      \"value\": 7000000000\n                                  }\n                              ]\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Received\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"displayName\": \"$pod\",\n                          \"max\": 10000000000,\n                          \"min\": 0,\n                          \"thresholds\": {\n                              \"steps\": [\n                                  {\n                                      \"color\": \"dark-green\",\n                                      \"index\": 0,\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"color\": \"dark-yellow\",\n                                      \"index\": 1,\n                                      \"value\": 5000000000\n                                  },\n                                  {\n                                      \"color\": \"dark-red\",\n                                      \"index\": 2,\n                                      \"value\": 7000000000\n                                  }\n                              ]\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Transmitted\",\n                  \"type\": \"gauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 9\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum((8 * rate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 18\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"pod\",\n                      \"name\": \"pod\",\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, pod)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Pod\",\n          \"uid\": \"7a18067ce943a40ae25454675c19ff5c\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-pod-total\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    prometheus-remote-write.json: |-\n      {\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Timestamps\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"(\\n  prometheus_remote_storage_queue_highest_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\\n-\\n  prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\\n)\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}::{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Highest Enqueued Timestamp vs. Highest Timestamp Sent\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"clamp_min(\\n  rate(prometheus_remote_storage_queue_highest_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m])\\n-\\n  rate(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m])\\n, 0)\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Rate[5m]\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 4,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Samples\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(\\n  prometheus_remote_storage_samples_in_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\\n-\\n  ignoring(remote_name, url) group_right(instance) (rate(prometheus_remote_storage_succeeded_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m]) or rate(prometheus_remote_storage_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m]))\\n-\\n  (rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m]))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Rate, in vs. succeeded or dropped [5m]\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 16\n                  },\n                  \"id\": 6,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Shards\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 16\n                  },\n                  \"id\": 7,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Current Shards\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 23\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_remote_storage_shards_max{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Max Shards\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 23\n                  },\n                  \"id\": 9,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_remote_storage_shards_min{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Min Shards\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 23\n                  },\n                  \"id\": 10,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_remote_storage_shards_desired{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Desired Shards\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 24\n                  },\n                  \"id\": 11,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Shard Details\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 25\n                  },\n                  \"id\": 12,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_remote_storage_shard_capacity{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Shard Capacity\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 25\n                  },\n                  \"id\": 13,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_remote_storage_pending_samples{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"} or prometheus_remote_storage_samples_pending{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Pending Samples\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 32\n                  },\n                  \"id\": 14,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Segments\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 33\n                  },\n                  \"id\": 15,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_tsdb_wal_segment_current{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"TSDB Current Segment\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 33\n                  },\n                  \"id\": 16,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_wal_watcher_current_segment{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{consumer}}\"\n                      }\n                  ],\n                  \"title\": \"Remote Write Current Segment\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 40\n                  },\n                  \"id\": 17,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Misc. Rates\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 0,\n                      \"y\": 41\n                  },\n                  \"id\": 18,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m])\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Dropped Samples\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 6,\n                      \"y\": 41\n                  },\n                  \"id\": 19,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(prometheus_remote_storage_failed_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m])\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Failed Samples\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 12,\n                      \"y\": 41\n                  },\n                  \"id\": 20,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(prometheus_remote_storage_retried_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m]) or rate(prometheus_remote_storage_samples_retried_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m])\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Retried Samples\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 0,\n                              \"showPoints\": \"never\"\n                          }\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 6,\n                      \"x\": 18,\n                      \"y\": 41\n                  },\n                  \"id\": 21,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(prometheus_remote_storage_enqueue_retries_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\", url=~\\\"$url\\\"}[5m])\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\"\n                      }\n                  ],\n                  \"title\": \"Enqueue Retries\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"prometheus-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"$__all\",\n                          \"value\": \"$__all\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(prometheus_build_info, cluster)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"includeAll\": true,\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(prometheus_build_info{cluster=~\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"includeAll\": true,\n                      \"name\": \"url\",\n                      \"query\": \"label_values(prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}, url)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"60s\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Prometheus / Remote Write\",\n          \"uid\": \"cb079f93-fde4-41f0-862b-d4301d7c1c56\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-prometheus-remote-write\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    prometheus.json: |-\n      {\n          \"panels\": [\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Prometheus Stats\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"decimals\": 2,\n                          \"displayName\": \"\",\n                          \"unit\": \"short\"\n                      },\n                      \"overrides\": [\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Time\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"displayName\",\n                                      \"value\": \"Time\"\n                                  },\n                                  {\n                                      \"id\": \"custom.align\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"id\": \"custom.hidden\",\n                                      \"value\": \"true\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"cluster\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.align\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"short\"\n                                  },\n                                  {\n                                      \"id\": \"decimals\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"displayName\",\n                                      \"value\": \"Cluster\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"job\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"custom.align\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"short\"\n                                  },\n                                  {\n                                      \"id\": \"decimals\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"displayName\",\n                                      \"value\": \"Job\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"instance\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"displayName\",\n                                      \"value\": \"Instance\"\n                                  },\n                                  {\n                                      \"id\": \"custom.align\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"short\"\n                                  },\n                                  {\n                                      \"id\": \"decimals\",\n                                      \"value\": 2\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"version\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"displayName\",\n                                      \"value\": \"Version\"\n                                  },\n                                  {\n                                      \"id\": \"custom.align\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"short\"\n                                  },\n                                  {\n                                      \"id\": \"decimals\",\n                                      \"value\": 2\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Value #A\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"displayName\",\n                                      \"value\": \"Count\"\n                                  },\n                                  {\n                                      \"id\": \"custom.align\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"short\"\n                                  },\n                                  {\n                                      \"id\": \"decimals\",\n                                      \"value\": 2\n                                  },\n                                  {\n                                      \"id\": \"custom.hidden\",\n                                      \"value\": \"true\"\n                                  }\n                              ]\n                          },\n                          {\n                              \"matcher\": {\n                                  \"id\": \"byName\",\n                                  \"options\": \"Value #B\"\n                              },\n                              \"properties\": [\n                                  {\n                                      \"id\": \"displayName\",\n                                      \"value\": \"Uptime\"\n                                  },\n                                  {\n                                      \"id\": \"custom.align\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"id\": \"unit\",\n                                      \"value\": \"s\"\n                                  }\n                              ]\n                          }\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 2,\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"count by (cluster, job, instance, version) (prometheus_build_info{cluster=~\\\"$cluster\\\", job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (cluster, job, instance) (time() - process_start_time_seconds{cluster=~\\\"$cluster\\\", job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"legendFormat\": \"\"\n                      }\n                  ],\n                  \"title\": \"Prometheus Stats\",\n                  \"type\": \"table\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 8\n                  },\n                  \"id\": 3,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Discovery\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"ms\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 4,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum(rate(prometheus_target_sync_length_seconds_sum{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])) by (cluster, job, scrape_job, instance) * 1e3\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{cluster}}:{{job}}:{{instance}}:{{scrape_job}}\"\n                      }\n                  ],\n                  \"title\": \"Target Sync\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"lineWidth\": 0,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 9\n                  },\n                  \"id\": 5,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum by (cluster, job, instance) (prometheus_sd_discovered_targets{cluster=~\\\"$cluster\\\", job=~\\\"$job\\\",instance=~\\\"$instance\\\"})\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{cluster}}:{{job}}:{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Targets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 16\n                  },\n                  \"id\": 6,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Retrieval\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\"\n                          },\n                          \"min\": 0,\n                          \"unit\": \"ms\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 17\n                  },\n                  \"id\": 7,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(prometheus_target_interval_length_seconds_sum{cluster=~\\\"$cluster\\\", job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) / rate(prometheus_target_interval_length_seconds_count{cluster=~\\\"$cluster\\\", job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) * 1e3\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{cluster}}:{{job}}:{{instance}} {{interval}} configured\"\n                      }\n                  ],\n                  \"title\": \"Average Scrape Interval Duration\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"lineWidth\": 0,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 17\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum by (cluster, job, instance) (rate(prometheus_target_scrapes_exceeded_body_size_limit_total{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[1m]))\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"exceeded body size limit: {{cluster}} {{job}} {{instance}}\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum by (cluster, job, instance) (rate(prometheus_target_scrapes_exceeded_sample_limit_total{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[1m]))\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"exceeded sample limit: {{cluster}} {{job}} {{instance}}\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum by (cluster, job, instance) (rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[1m]))\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"duplicate timestamp: {{cluster}} {{job}} {{instance}}\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum by (cluster, job, instance) (rate(prometheus_target_scrapes_sample_out_of_bounds_total{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[1m]))\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"out of bounds: {{cluster}} {{job}} {{instance}}\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"sum by (cluster, job, instance) (rate(prometheus_target_scrapes_sample_out_of_order_total{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[1m]))\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"out of order: {{cluster}} {{job}} {{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Scrape failures\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"lineWidth\": 0,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 17\n                  },\n                  \"id\": 9,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(prometheus_tsdb_head_samples_appended_total{cluster=~\\\"$cluster\\\", job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{cluster}} {{job}} {{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Appended Samples\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 24\n                  },\n                  \"id\": 10,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Storage\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"lineWidth\": 0,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 25\n                  },\n                  \"id\": 11,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_tsdb_head_series{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{cluster}} {{job}} {{instance}} head series\"\n                      }\n                  ],\n                  \"title\": \"Head Series\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"lineWidth\": 0,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 25\n                  },\n                  \"id\": 12,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"prometheus_tsdb_head_chunks{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{cluster}} {{job}} {{instance}} head chunks\"\n                      }\n                  ],\n                  \"title\": \"Head Chunks\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 32\n                  },\n                  \"id\": 13,\n                  \"panels\": [\n\n                  ],\n                  \"title\": \"Query\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"lineWidth\": 0,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 33\n                  },\n                  \"id\": 14,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"rate(prometheus_engine_query_duration_seconds_count{cluster=~\\\"$cluster\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\",slice=\\\"inner_eval\\\"}[5m])\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{cluster}} {{job}} {{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Query Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"prometheus\",\n                      \"uid\": \"$datasource\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 100,\n                              \"lineWidth\": 0,\n                              \"showPoints\": \"never\",\n                              \"stacking\": {\n                                  \"mode\": \"normal\"\n                              }\n                          },\n                          \"min\": 0,\n                          \"unit\": \"ms\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 33\n                  },\n                  \"id\": 15,\n                  \"options\": {\n                      \"tooltip\": {\n                          \"mode\": \"multi\",\n                          \"sort\": \"desc\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"$datasource\"\n                          },\n                          \"expr\": \"max by (slice) (prometheus_engine_query_duration_seconds{quantile=\\\"0.9\\\",cluster=~\\\"$cluster\\\", job=~\\\"$job\\\",instance=~\\\"$instance\\\"}) * 1e3\",\n                          \"format\": \"time_series\",\n                          \"legendFormat\": \"{{slice}}\"\n                      }\n                  ],\n                  \"title\": \"Stage Duration\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"prometheus-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": [\n                              \"$__all\"\n                          ],\n                          \"value\": [\n                              \"$__all\"\n                          ]\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"cluster\",\n                      \"multi\": true,\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(prometheus_build_info{job=\\\"prometheus-k8s\\\",namespace=\\\"monitoring\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 2,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"includeAll\": true,\n                      \"label\": \"job\",\n                      \"multi\": true,\n                      \"name\": \"job\",\n                      \"query\": \"label_values(prometheus_build_info{cluster=~\\\"$cluster\\\"}, job)\",\n                      \"refresh\": 2,\n                      \"sort\": 2,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"includeAll\": true,\n                      \"label\": \"instance\",\n                      \"multi\": true,\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(prometheus_build_info{cluster=~\\\"$cluster\\\", job=~\\\"$job\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"sort\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"60s\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Prometheus / Overview\",\n          \"uid\": \"9fa0d141-d019-4ad7-8bc5-42196ee308bd\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-prometheus\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    proxy.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Up\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 10,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubeproxy_sync_proxy_rules_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"rate\"\n                      }\n                  ],\n                  \"title\": \"Rules Sync Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 10,\n                      \"x\": 14,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99,rate(kubeproxy_sync_proxy_rules_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Rules Sync Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(kubeproxy_network_programming_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"rate\"\n                      }\n                  ],\n                  \"title\": \"Network Programming Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 7\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubeproxy_network_programming_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Network Programming Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"2xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"3xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"4xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"5xx\"\n                      }\n                  ],\n                  \"title\": \"Kube API Request Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 16,\n                      \"x\": 8,\n                      \"y\": 14\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\",verb=\\\"POST\\\"}[$__rate_interval])) by (verb, le))\",\n                          \"legendFormat\": \"{{verb}}\"\n                      }\n                  ],\n                  \"title\": \"Post Request Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, le))\",\n                          \"legendFormat\": \"{{verb}}\"\n                      }\n                  ],\n                  \"title\": \"Get Request Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 28\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"CPU usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 28\n                  },\n                  \"id\": 11,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Goroutines\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-proxy\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(up{job=\\\"kube-proxy\\\", cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Proxy\",\n          \"uid\": \"632e265de029684c40b21cb76bca4f94\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-proxy\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    scheduler.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"colorMode\": \"none\"\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\"})\",\n                          \"instant\": true\n                      }\n                  ],\n                  \"title\": \"Up\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 10,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(scheduler_scheduling_attempt_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} e2e\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(scheduler_pod_scheduling_sli_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} binding\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(scheduler_scheduling_algorithm_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} scheduling algorithm\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(scheduler_volume_scheduling_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} volume\"\n                      }\n                  ],\n                  \"title\": \"Scheduling Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 10,\n                      \"x\": 14,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_scheduling_attempt_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} e2e\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_pod_scheduling_sli_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} binding\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} scheduling algorithm\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_volume_scheduling_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                          \"legendFormat\": \"{{cluster}} {{instance}} volume\"\n                      }\n                  ],\n                  \"title\": \"Scheduling latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"2xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"3xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"4xx\"\n                      },\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                          \"legendFormat\": \"5xx\"\n                      }\n                  ],\n                  \"title\": \"Kube API Request Rate\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"ops\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 16,\n                      \"x\": 8,\n                      \"y\": 7\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, le))\",\n                          \"legendFormat\": \"{{verb}}\"\n                      }\n                  ],\n                  \"title\": \"Post Request Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"s\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, le))\",\n                          \"legendFormat\": \"{{verb}}\"\n                      }\n                  ],\n                  \"title\": \"Get Request Latency 99th Quantile\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bytes\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Memory\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 21\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"CPU usage\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"short\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 21\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}\",\n                          \"legendFormat\": \"{{instance}}\"\n                      }\n                  ],\n                  \"title\": \"Goroutines\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(up{job=\\\"kube-scheduler\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"instance\",\n                      \"name\": \"instance\",\n                      \"query\": \"label_values(up{job=\\\"kube-scheduler\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Scheduler\",\n          \"uid\": \"2e6b6a3b4bddf1427b3a55aa1311c656\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-scheduler\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    workload-total.json: |-\n      {\n          \"editable\": false,\n          \"links\": [\n              {\n                  \"asDropdown\": true,\n                  \"includeVars\": true,\n                  \"keepTime\": true,\n                  \"tags\": [\n                      \"kubernetes-mixin\"\n                  ],\n                  \"targetBlank\": false,\n                  \"title\": \"Kubernetes\",\n                  \"type\": \"dashboards\"\n              }\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"fixedColor\": \"green\",\n                              \"mode\": \"fixed\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 1,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"displayMode\": \"basic\",\n                      \"showUnfilled\": false\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Received\",\n                  \"type\": \"bargauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"fixedColor\": \"green\",\n                              \"mode\": \"fixed\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"displayMode\": \"basic\",\n                      \"showUnfilled\": false\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Current Rate of Bits Transmitted\",\n                  \"type\": \"bargauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"fixedColor\": \"green\",\n                              \"mode\": \"fixed\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 9\n                  },\n                  \"id\": 3,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"displayMode\": \"basic\",\n                      \"showUnfilled\": false\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(avg((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Rate of Bits Received\",\n                  \"type\": \"bargauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"color\": {\n                              \"fixedColor\": \"green\",\n                              \"mode\": \"fixed\"\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 9\n                  },\n                  \"id\": 4,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"displayMode\": \"basic\",\n                      \"showUnfilled\": false\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(avg((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Average Rate of Bits Transmitted\",\n                  \"type\": \"bargauge\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 18\n                  },\n                  \"id\": 5,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Receive Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"bps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 18\n                  },\n                  \"id\": 6,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum((8 * rate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval]))\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Transmit Bandwidth\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 27\n                  },\n                  \"id\": 7,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 27\n                  },\n                  \"id\": 8,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 36\n                  },\n                  \"id\": 9,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Received Packets Dropped\",\n                  \"type\": \"timeseries\"\n              },\n              {\n                  \"datasource\": {\n                      \"type\": \"datasource\",\n                      \"uid\": \"-- Mixed --\"\n                  },\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"fillOpacity\": 10,\n                              \"showPoints\": \"never\",\n                              \"spanNulls\": true\n                          },\n                          \"unit\": \"pps\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 36\n                  },\n                  \"id\": 10,\n                  \"interval\": \"1m\",\n                  \"options\": {\n                      \"legend\": {\n                          \"asTable\": true,\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"displayMode\": \"table\",\n                          \"placement\": \"right\",\n                          \"showLegend\": true\n                      },\n                      \"tooltip\": {\n                          \"mode\": \"single\"\n                      }\n                  },\n                  \"pluginVersion\": \"v11.4.0\",\n                  \"targets\": [\n                      {\n                          \"datasource\": {\n                              \"type\": \"prometheus\",\n                              \"uid\": \"${datasource}\"\n                          },\n                          \"expr\": \"sort_desc(sum(rate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$__rate_interval])\\n* on (cluster, namespace, pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=~\\\"$type\\\"}) by (pod))\\n\",\n                          \"legendFormat\": \"__auto\"\n                      }\n                  ],\n                  \"title\": \"Rate of Transmitted Packets Dropped\",\n                  \"type\": \"timeseries\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"schemaVersion\": 39,\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data source\",\n                      \"name\": \"datasource\",\n                      \"query\": \"prometheus\",\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"cluster\",\n                      \"name\": \"cluster\",\n                      \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"namespace\",\n                      \"name\": \"namespace\",\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"workload\",\n                      \"name\": \"workload\",\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=~\\\"$namespace\\\", workload=~\\\".+\\\"}, workload)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"datasource\": {\n                          \"type\": \"prometheus\",\n                          \"uid\": \"${datasource}\"\n                      },\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"workload_type\",\n                      \"name\": \"type\",\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"sort\": 1,\n                      \"type\": \"query\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Workload\",\n          \"uid\": \"728bf77cc1166d2f3133bf25846876cc\"\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 12.4.1\n    name: grafana-dashboard-workload-total\n    namespace: monitoring\nkind: ConfigMapList\n"
  },
  {
    "path": "manifests/grafana-dashboardSources.yaml",
    "content": "apiVersion: v1\ndata:\n  dashboards.yaml: |-\n    {\n        \"apiVersion\": 1,\n        \"providers\": [\n            {\n                \"folder\": \"Default\",\n                \"folderUid\": \"\",\n                \"name\": \"0\",\n                \"options\": {\n                    \"path\": \"/grafana-dashboard-definitions/0\"\n                },\n                \"orgId\": 1,\n                \"type\": \"file\"\n            }\n        ]\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana-dashboards\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/grafana-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        checksum/grafana-config: 98ecb1c944b4b4fa1b90007253cbdb04\n        checksum/grafana-dashboardproviders: 3485c95e212897c2a5a58814eac770d1\n        checksum/grafana-datasources: 0feb1859e393445e14f63ceee620a7ae\n      labels:\n        app.kubernetes.io/component: grafana\n        app.kubernetes.io/name: grafana\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 12.4.1\n    spec:\n      automountServiceAccountToken: false\n      containers:\n      - env: []\n        image: grafana/grafana:12.4.1\n        name: grafana\n        ports:\n        - containerPort: 3000\n          name: http\n        readinessProbe:\n          httpGet:\n            path: /api/health\n            port: http\n        resources:\n          limits:\n            cpu: 200m\n            memory: 200Mi\n          requests:\n            cpu: 100m\n            memory: 100Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /var/lib/grafana\n          name: grafana-storage\n          readOnly: false\n        - mountPath: /etc/grafana/provisioning/datasources\n          name: grafana-datasources\n          readOnly: false\n        - mountPath: /etc/grafana/provisioning/dashboards\n          name: grafana-dashboards\n          readOnly: false\n        - mountPath: /tmp\n          name: tmp-plugins\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/alertmanager-overview\n          name: grafana-dashboard-alertmanager-overview\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/apiserver\n          name: grafana-dashboard-apiserver\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/cluster-total\n          name: grafana-dashboard-cluster-total\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/controller-manager\n          name: grafana-dashboard-controller-manager\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/grafana-overview\n          name: grafana-dashboard-grafana-overview\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-cluster\n          name: grafana-dashboard-k8s-resources-cluster\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-multicluster\n          name: grafana-dashboard-k8s-resources-multicluster\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-namespace\n          name: grafana-dashboard-k8s-resources-namespace\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-node\n          name: grafana-dashboard-k8s-resources-node\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-pod\n          name: grafana-dashboard-k8s-resources-pod\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-windows-cluster\n          name: grafana-dashboard-k8s-resources-windows-cluster\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-windows-namespace\n          name: grafana-dashboard-k8s-resources-windows-namespace\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-windows-pod\n          name: grafana-dashboard-k8s-resources-windows-pod\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workload\n          name: grafana-dashboard-k8s-resources-workload\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workloads-namespace\n          name: grafana-dashboard-k8s-resources-workloads-namespace\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-windows-cluster-rsrc-use\n          name: grafana-dashboard-k8s-windows-cluster-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-windows-node-rsrc-use\n          name: grafana-dashboard-k8s-windows-node-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/kubelet\n          name: grafana-dashboard-kubelet\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/namespace-by-pod\n          name: grafana-dashboard-namespace-by-pod\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/namespace-by-workload\n          name: grafana-dashboard-namespace-by-workload\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/node-cluster-rsrc-use\n          name: grafana-dashboard-node-cluster-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/node-rsrc-use\n          name: grafana-dashboard-node-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/nodes-aix\n          name: grafana-dashboard-nodes-aix\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/nodes-darwin\n          name: grafana-dashboard-nodes-darwin\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/nodes\n          name: grafana-dashboard-nodes\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/persistentvolumesusage\n          name: grafana-dashboard-persistentvolumesusage\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/pod-total\n          name: grafana-dashboard-pod-total\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/prometheus-remote-write\n          name: grafana-dashboard-prometheus-remote-write\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/prometheus\n          name: grafana-dashboard-prometheus\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/proxy\n          name: grafana-dashboard-proxy\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/scheduler\n          name: grafana-dashboard-scheduler\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/workload-total\n          name: grafana-dashboard-workload-total\n          readOnly: false\n        - mountPath: /etc/grafana\n          name: grafana-config\n          readOnly: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        fsGroup: 65534\n        runAsGroup: 65534\n        runAsNonRoot: true\n        runAsUser: 65534\n      serviceAccountName: grafana\n      volumes:\n      - emptyDir: {}\n        name: grafana-storage\n      - name: grafana-datasources\n        secret:\n          secretName: grafana-datasources\n      - configMap:\n          name: grafana-dashboards\n        name: grafana-dashboards\n      - emptyDir:\n          medium: Memory\n        name: tmp-plugins\n      - configMap:\n          name: grafana-dashboard-alertmanager-overview\n        name: grafana-dashboard-alertmanager-overview\n      - configMap:\n          name: grafana-dashboard-apiserver\n        name: grafana-dashboard-apiserver\n      - configMap:\n          name: grafana-dashboard-cluster-total\n        name: grafana-dashboard-cluster-total\n      - configMap:\n          name: grafana-dashboard-controller-manager\n        name: grafana-dashboard-controller-manager\n      - configMap:\n          name: grafana-dashboard-grafana-overview\n        name: grafana-dashboard-grafana-overview\n      - configMap:\n          name: grafana-dashboard-k8s-resources-cluster\n        name: grafana-dashboard-k8s-resources-cluster\n      - configMap:\n          name: grafana-dashboard-k8s-resources-multicluster\n        name: grafana-dashboard-k8s-resources-multicluster\n      - configMap:\n          name: grafana-dashboard-k8s-resources-namespace\n        name: grafana-dashboard-k8s-resources-namespace\n      - configMap:\n          name: grafana-dashboard-k8s-resources-node\n        name: grafana-dashboard-k8s-resources-node\n      - configMap:\n          name: grafana-dashboard-k8s-resources-pod\n        name: grafana-dashboard-k8s-resources-pod\n      - configMap:\n          name: grafana-dashboard-k8s-resources-windows-cluster\n        name: grafana-dashboard-k8s-resources-windows-cluster\n      - configMap:\n          name: grafana-dashboard-k8s-resources-windows-namespace\n        name: grafana-dashboard-k8s-resources-windows-namespace\n      - configMap:\n          name: grafana-dashboard-k8s-resources-windows-pod\n        name: grafana-dashboard-k8s-resources-windows-pod\n      - configMap:\n          name: grafana-dashboard-k8s-resources-workload\n        name: grafana-dashboard-k8s-resources-workload\n      - configMap:\n          name: grafana-dashboard-k8s-resources-workloads-namespace\n        name: grafana-dashboard-k8s-resources-workloads-namespace\n      - configMap:\n          name: grafana-dashboard-k8s-windows-cluster-rsrc-use\n        name: grafana-dashboard-k8s-windows-cluster-rsrc-use\n      - configMap:\n          name: grafana-dashboard-k8s-windows-node-rsrc-use\n        name: grafana-dashboard-k8s-windows-node-rsrc-use\n      - configMap:\n          name: grafana-dashboard-kubelet\n        name: grafana-dashboard-kubelet\n      - configMap:\n          name: grafana-dashboard-namespace-by-pod\n        name: grafana-dashboard-namespace-by-pod\n      - configMap:\n          name: grafana-dashboard-namespace-by-workload\n        name: grafana-dashboard-namespace-by-workload\n      - configMap:\n          name: grafana-dashboard-node-cluster-rsrc-use\n        name: grafana-dashboard-node-cluster-rsrc-use\n      - configMap:\n          name: grafana-dashboard-node-rsrc-use\n        name: grafana-dashboard-node-rsrc-use\n      - configMap:\n          name: grafana-dashboard-nodes-aix\n        name: grafana-dashboard-nodes-aix\n      - configMap:\n          name: grafana-dashboard-nodes-darwin\n        name: grafana-dashboard-nodes-darwin\n      - configMap:\n          name: grafana-dashboard-nodes\n        name: grafana-dashboard-nodes\n      - configMap:\n          name: grafana-dashboard-persistentvolumesusage\n        name: grafana-dashboard-persistentvolumesusage\n      - configMap:\n          name: grafana-dashboard-pod-total\n        name: grafana-dashboard-pod-total\n      - configMap:\n          name: grafana-dashboard-prometheus-remote-write\n        name: grafana-dashboard-prometheus-remote-write\n      - configMap:\n          name: grafana-dashboard-prometheus\n        name: grafana-dashboard-prometheus\n      - configMap:\n          name: grafana-dashboard-proxy\n        name: grafana-dashboard-proxy\n      - configMap:\n          name: grafana-dashboard-scheduler\n        name: grafana-dashboard-scheduler\n      - configMap:\n          name: grafana-dashboard-workload-total\n        name: grafana-dashboard-workload-total\n      - name: grafana-config\n        secret:\n          secretName: grafana-config\n"
  },
  {
    "path": "manifests/grafana-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 3000\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/grafana-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n    prometheus: k8s\n    role: alert-rules\n  name: grafana-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: GrafanaAlerts\n    rules:\n    - alert: GrafanaRequestsFailing\n      annotations:\n        message: '{{ $labels.namespace }}/{{ $labels.job }}/{{ $labels.handler }} is experiencing {{ $value | humanize }}% errors'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/grafana/grafanarequestsfailing\n      expr: |\n        100 * sum without (status_code) (namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~\"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query\", status_code=~\"5..\"})\n        /\n        sum without (status_code) (namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~\"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query\"})\n        > 50\n      for: 5m\n      labels:\n        severity: warning\n  - name: grafana_rules\n    rules:\n    - expr: |\n        sum by (namespace, job, handler, status_code) (rate(grafana_http_request_duration_seconds_count[5m]))\n      record: namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m\n"
  },
  {
    "path": "manifests/grafana-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana\n  namespace: monitoring\nspec:\n  ports:\n  - name: http\n    port: 3000\n    targetPort: http\n  selector:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/grafana-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/grafana-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 12.4.1\n  name: grafana\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 15s\n    port: http\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana\n"
  },
  {
    "path": "manifests/kubePrometheus-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    prometheus: k8s\n    role: alert-rules\n  name: kube-prometheus-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: general.rules\n    rules:\n    - alert: TargetDown\n      annotations:\n        description: '{{ printf \"%.4g\" $value }}% of the {{ $labels.job }}/{{ $labels.service }} targets in {{ $labels.namespace }} namespace are down.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/targetdown\n        summary: One or more targets are unreachable.\n      expr: 100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up) BY (cluster, job, namespace, service)) > 10\n      for: 10m\n      labels:\n        severity: warning\n    - alert: Watchdog\n      annotations:\n        description: |\n          This is an alert meant to ensure that the entire alerting pipeline is functional.\n          This alert is always firing, therefore it should always be firing in Alertmanager\n          and always fire against a receiver. There are integrations with various notification\n          mechanisms that send a notification when this alert is not firing. For example the\n          \"DeadMansSnitch\" integration in PagerDuty.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/watchdog\n        summary: An alert that should always be firing to certify that Alertmanager is working properly.\n      expr: vector(1)\n      labels:\n        severity: none\n    - alert: InfoInhibitor\n      annotations:\n        description: |\n          This is an alert that is used to inhibit info alerts.\n          By themselves, the info-level alerts are sometimes very noisy, but they are relevant when combined with\n          other alerts.\n          This alert fires whenever there's a severity=\"info\" alert, and stops firing when another alert with a\n          severity of 'warning' or 'critical' starts firing on the same namespace.\n          This alert should be routed to a null receiver and configured to inhibit alerts with severity=\"info\".\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/infoinhibitor\n        summary: Info-level alert inhibition.\n      expr: group by (namespace) (ALERTS{severity = \"info\"} == 1) unless on (namespace) group by (namespace) (ALERTS{alertname != \"InfoInhibitor\", alertstate = \"firing\", severity =~ \"warning|critical\"} == 1)\n      labels:\n        severity: none\n  - name: node-network\n    rules:\n    - alert: NodeNetworkInterfaceFlapping\n      annotations:\n        description: Network interface \"{{ $labels.device }}\" changing its up status often on node-exporter {{ $labels.namespace }}/{{ $labels.pod }}\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/nodenetworkinterfaceflapping\n        summary: Network interface is often changing its status\n      expr: |\n        changes(node_network_up{job=\"node-exporter\",device!~\"veth.+\"}[2m]) > 2\n      for: 2m\n      labels:\n        severity: warning\n  - name: kube-prometheus-node-recording.rules\n    rules:\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[3m])) BY (instance)\n      record: instance:node_cpu:rate:sum\n    - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance)\n      record: instance:node_network_receive_bytes:rate:sum\n    - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance)\n      record: instance:node_network_transmit_bytes:rate:sum\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance)\n      record: instance:node_cpu:ratio\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m]))\n      record: cluster:node_cpu:sum_rate5m\n    - expr: cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu))\n      record: cluster:node_cpu:ratio\n  - name: kube-prometheus-general.rules\n    rules:\n    - expr: count without(instance, pod, node) (up == 1)\n      record: count:up1\n    - expr: count without(instance, pod, node) (up == 0)\n      record: count:up0\n"
  },
  {
    "path": "manifests/kubeStateMetrics-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n  name: kube-state-metrics\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  - nodes\n  - pods\n  - services\n  - serviceaccounts\n  - resourcequotas\n  - replicationcontrollers\n  - limitranges\n  - persistentvolumeclaims\n  - persistentvolumes\n  - namespaces\n  - endpoints\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  - daemonsets\n  - deployments\n  - replicasets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - cronjobs\n  - jobs\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - autoscaling\n  resources:\n  - horizontalpodautoscalers\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n- apiGroups:\n  - policy\n  resources:\n  - poddisruptionbudgets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - certificates.k8s.io\n  resources:\n  - certificatesigningrequests\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - storage.k8s.io\n  resources:\n  - storageclasses\n  - volumeattachments\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - mutatingwebhookconfigurations\n  - validatingwebhookconfigurations\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - networkpolicies\n  - ingressclasses\n  - ingresses\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - rbac.authorization.k8s.io\n  resources:\n  - clusterrolebindings\n  - clusterroles\n  - rolebindings\n  - roles\n  verbs:\n  - list\n  - watch\n"
  },
  {
    "path": "manifests/kubeStateMetrics-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n  name: kube-state-metrics\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kube-state-metrics\nsubjects:\n- kind: ServiceAccount\n  name: kube-state-metrics\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/kubeStateMetrics-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: kube-state-metrics\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: kube-state-metrics\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 2.18.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --host=127.0.0.1\n        - --port=8081\n        - --telemetry-host=127.0.0.1\n        - --telemetry-port=8082\n        image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.18.0\n        name: kube-state-metrics\n        resources:\n          limits:\n            cpu: 100m\n            memory: 250Mi\n          requests:\n            cpu: 10m\n            memory: 190Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65534\n          runAsNonRoot: true\n          runAsUser: 65534\n          seccompProfile:\n            type: RuntimeDefault\n      - args:\n        - --secure-listen-address=:8443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8081/\n        image: quay.io/brancz/kube-rbac-proxy:v0.21.0\n        name: kube-rbac-proxy-main\n        ports:\n        - containerPort: 8443\n          name: https-main\n        resources:\n          limits:\n            cpu: 40m\n            memory: 40Mi\n          requests:\n            cpu: 20m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n          seccompProfile:\n            type: RuntimeDefault\n      - args:\n        - --secure-listen-address=:9443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8082/\n        image: quay.io/brancz/kube-rbac-proxy:v0.21.0\n        name: kube-rbac-proxy-self\n        ports:\n        - containerPort: 9443\n          name: https-self\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n          seccompProfile:\n            type: RuntimeDefault\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: kube-state-metrics\n"
  },
  {
    "path": "manifests/kubeStateMetrics-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 8443\n      protocol: TCP\n    - port: 9443\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/kubeStateMetrics-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n    prometheus: k8s\n    role: alert-rules\n  name: kube-state-metrics-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: kube-state-metrics\n    rules:\n    - alert: KubeStateMetricsListErrors\n      annotations:\n        description: kube-state-metrics is experiencing errors at an elevated rate in list operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricslisterrors\n        summary: kube-state-metrics is experiencing errors in list operations.\n      expr: |\n        (sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsWatchErrors\n      annotations:\n        description: kube-state-metrics is experiencing errors at an elevated rate in watch operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricswatcherrors\n        summary: kube-state-metrics is experiencing errors in watch operations.\n      expr: |\n        (sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsShardingMismatch\n      annotations:\n        description: kube-state-metrics pods are running with different --total-shards configuration, some Kubernetes objects may be exposed multiple times or not exposed at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardingmismatch\n        summary: kube-state-metrics sharding is misconfigured.\n      expr: |\n        stdvar (kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) != 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsShardsMissing\n      annotations:\n        description: kube-state-metrics shards are missing, some Kubernetes objects are not being exposed.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardsmissing\n        summary: kube-state-metrics shards are missing.\n      expr: |\n        2^max(kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) - 1\n          -\n        sum( 2 ^ max by (cluster, shard_ordinal) (kube_state_metrics_shard_ordinal{job=\"kube-state-metrics\"}) ) by (cluster)\n        != 0\n      for: 15m\n      labels:\n        severity: critical\n"
  },
  {
    "path": "manifests/kubeStateMetrics-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https-main\n    port: 8443\n    targetPort: https-main\n  - name: https-self\n    port: 9443\n    targetPort: https-self\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/kubeStateMetrics-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n  name: kube-state-metrics\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/kubeStateMetrics-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.18.0\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kube_(endpoint_(address_not_ready|address_available|ports))\n      sourceLabels:\n      - __name__\n    port: https-main\n    relabelings:\n    - action: labeldrop\n      regex: (pod|service|endpoint|namespace)\n    scheme: https\n    scrapeTimeout: 30s\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    port: https-self\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/kubernetesControlPlane-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: kubernetes\n    app.kubernetes.io/name: kube-prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    prometheus: k8s\n    role: alert-rules\n  name: kubernetes-monitoring-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: kubernetes-apps\n    rules:\n    - alert: KubePodCrashLooping\n      annotations:\n        description: 'Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container }}) is in waiting state (reason: \"CrashLoopBackOff\") on cluster {{ $labels.cluster }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodcrashlooping\n        summary: Pod is crash looping.\n      expr: |\n        max_over_time(kube_pod_container_status_waiting_reason{reason=\"CrashLoopBackOff\", job=\"kube-state-metrics\"}[5m]) >= 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubePodNotReady\n      annotations:\n        description: Pod {{ $labels.namespace }}/{{ $labels.pod }} has been in a non-ready state for longer than 15 minutes on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodnotready\n        summary: Pod has been in a non-ready state for more than 15 minutes.\n      expr: |\n        sum by (namespace, pod, job, cluster) (\n          max by(namespace, pod, job, cluster) (\n            kube_pod_status_phase{job=\"kube-state-metrics\", phase=~\"Pending|Unknown\"}\n          ) * on(namespace, pod, cluster) group_left(owner_kind) topk by(namespace, pod, cluster) (\n            1, max by(namespace, pod, owner_kind, cluster) (kube_pod_owner{owner_kind!=\"Job\"})\n          )\n        ) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentGenerationMismatch\n      annotations:\n        description: Deployment generation for {{ $labels.namespace }}/{{ $labels.deployment }} does not match, this indicates that the Deployment has failed but has not been rolled back on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentgenerationmismatch\n        summary: Deployment generation mismatch due to possible roll-back\n      expr: |\n        kube_deployment_status_observed_generation{job=\"kube-state-metrics\"}\n          !=\n        kube_deployment_metadata_generation{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentReplicasMismatch\n      annotations:\n        description: Deployment {{ $labels.namespace }}/{{ $labels.deployment }} has not matched the expected number of replicas for longer than 15 minutes on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentreplicasmismatch\n        summary: Deployment has not matched the expected number of replicas.\n      expr: |\n        (\n          kube_deployment_spec_replicas{job=\"kube-state-metrics\"}\n            >\n          kube_deployment_status_replicas_available{job=\"kube-state-metrics\"}\n        ) and (\n          changes(kube_deployment_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentRolloutStuck\n      annotations:\n        description: Rollout of deployment {{ $labels.namespace }}/{{ $labels.deployment }} is not progressing for longer than 15 minutes on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentrolloutstuck\n        summary: Deployment rollout is not progressing.\n      expr: |\n        kube_deployment_status_condition{condition=\"Progressing\", status=\"false\",job=\"kube-state-metrics\"}\n        != 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetReplicasMismatch\n      annotations:\n        description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} has not matched the expected number of replicas for longer than 15 minutes on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetreplicasmismatch\n        summary: StatefulSet has not matched the expected number of replicas.\n      expr: |\n        (\n          kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\"}\n            !=\n          kube_statefulset_replicas{job=\"kube-state-metrics\"}\n        ) and (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetGenerationMismatch\n      annotations:\n        description: StatefulSet generation for {{ $labels.namespace }}/{{ $labels.statefulset }} does not match, this indicates that the StatefulSet has failed but has not been rolled back on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetgenerationmismatch\n        summary: StatefulSet generation mismatch due to possible roll-back\n      expr: |\n        kube_statefulset_status_observed_generation{job=\"kube-state-metrics\"}\n          !=\n        kube_statefulset_metadata_generation{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetUpdateNotRolledOut\n      annotations:\n        description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} update has not been rolled out on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetupdatenotrolledout\n        summary: StatefulSet update has not been rolled out.\n      expr: |\n        (\n          max by(namespace, statefulset, job, cluster) (\n            kube_statefulset_status_current_revision{job=\"kube-state-metrics\"}\n              unless\n            kube_statefulset_status_update_revision{job=\"kube-state-metrics\"}\n          )\n            * on(namespace, statefulset, job, cluster)\n          (\n            kube_statefulset_replicas{job=\"kube-state-metrics\"}\n              !=\n            kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}\n          )\n        )  and on(namespace, statefulset, job, cluster) (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetRolloutStuck\n      annotations:\n        description: DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} has not finished or progressed for at least 15m on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetrolloutstuck\n        summary: DaemonSet rollout is stuck.\n      expr: |\n        (\n          (\n            kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\"}\n              !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          ) or (\n            kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\"}\n              !=\n            0\n          ) or (\n            kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\"}\n              !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          ) or (\n            kube_daemonset_status_number_available{job=\"kube-state-metrics\"}\n              !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          )\n        ) and (\n          changes(kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeContainerWaiting\n      annotations:\n        description: 'pod/{{ $labels.pod }} in namespace {{ $labels.namespace }} on container {{ $labels.container}} has been in waiting state for longer than 1 hour. (reason: \"{{ $labels.reason }}\") on cluster {{ $labels.cluster }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontainerwaiting\n        summary: Pod container waiting longer than 1 hour\n      expr: |\n        kube_pod_container_status_waiting_reason{reason!=\"CrashLoopBackOff\", job=\"kube-state-metrics\"} > 0\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetNotScheduled\n      annotations:\n        description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} are not scheduled on cluster {{ $labels.cluster }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetnotscheduled\n        summary: DaemonSet pods are not scheduled.\n      expr: |\n        kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          -\n        kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\"} > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetMisScheduled\n      annotations:\n        description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} are running where they are not supposed to run on cluster {{ $labels.cluster }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetmisscheduled\n        summary: DaemonSet pods are misscheduled.\n      expr: |\n        kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\"} > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeJobNotCompleted\n      annotations:\n        description: Job {{ $labels.namespace }}/{{ $labels.job_name }} is taking more than {{ \"43200\" | humanizeDuration }} to complete on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobnotcompleted\n        summary: Job did not complete in time\n      expr: |\n        time() - max by(namespace, job_name, cluster) (kube_job_status_start_time{job=\"kube-state-metrics\"}\n          and\n        kube_job_status_active{job=\"kube-state-metrics\"} > 0) > 43200\n      labels:\n        severity: warning\n    - alert: KubeJobFailed\n      annotations:\n        description: Job {{ $labels.namespace }}/{{ $labels.job_name }} failed to complete. Removing failed job after investigation should clear this alert on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobfailed\n        summary: Job failed to complete.\n      expr: |\n        kube_job_failed{job=\"kube-state-metrics\"}  > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeHpaReplicasMismatch\n      annotations:\n        description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler  }} has not matched the desired number of replicas for longer than 15 minutes on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpareplicasmismatch\n        summary: HPA has not matched desired number of replicas.\n      expr: |\n        (kube_horizontalpodautoscaler_status_desired_replicas{job=\"kube-state-metrics\"}\n          !=\n        kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          >\n        kube_horizontalpodautoscaler_spec_min_replicas{job=\"kube-state-metrics\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          <\n        kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\"})\n          and\n        changes(kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}[15m]) == 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeHpaMaxedOut\n      annotations:\n        description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler  }} has been running at max replicas for longer than 15 minutes on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpamaxedout\n        summary: HPA is running at max replicas\n      expr: |\n        (\n          kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n            ==\n          kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\"}\n        )\n        and on(namespace, horizontalpodautoscaler) (\n          kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\"}\n            !=\n          kube_horizontalpodautoscaler_spec_min_replicas{job=\"kube-state-metrics\"}\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubePdbNotEnoughHealthyPods\n      annotations:\n        description: PDB {{ $labels.cluster }}/{{ $labels.namespace }}/{{ $labels.poddisruptionbudget }} expects {{ $value }} more healthy pods. The desired number of healthy pods has not been met for at least 15m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepdbnotenoughhealthypods\n        summary: PDB does not have enough healthy pods.\n      expr: |\n        (\n          kube_poddisruptionbudget_status_desired_healthy{job=\"kube-state-metrics\"}\n          -\n          kube_poddisruptionbudget_status_current_healthy{job=\"kube-state-metrics\"}\n        )\n        > 0\n      for: 15m\n      labels:\n        severity: warning\n  - name: kubernetes-resources\n    rules:\n    - alert: KubeCPUOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted CPU resource requests for Pods by {{ printf \"%.2f\" $value }} CPU shares and cannot tolerate node failure.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |\n        # Non-HA clusters.\n        (\n          (\n            sum by(cluster) (namespace_cpu:kube_pod_container_resource_requests:sum{})\n            -\n            sum by(cluster) (kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) > 0\n          )\n          and\n          count by (cluster) (max by (cluster, node) (kube_node_role{job=\"kube-state-metrics\", role=\"control-plane\"})) < 3\n        )\n        or\n        # HA clusters.\n        (\n          sum by(cluster) (namespace_cpu:kube_pod_container_resource_requests:sum{})\n          -\n          (\n            # Skip clusters with only one allocatable node.\n            (\n              sum by (cluster) (kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"})\n              -\n              max by (cluster) (kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"})\n            ) > 0\n          ) > 0\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeMemoryOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted memory resource requests for Pods by {{ $value | humanize }} bytes and cannot tolerate node failure.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |\n        # Non-HA clusters.\n        (\n          (\n            sum by(cluster) (namespace_memory:kube_pod_container_resource_requests:sum{})\n            -\n            sum by(cluster) (kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"memory\"}) > 0\n          )\n          and\n          count by (cluster) (max by (cluster, node) (kube_node_role{job=\"kube-state-metrics\", role=\"control-plane\"})) < 3\n        )\n        or\n        # HA clusters.\n        (\n          sum by(cluster) (namespace_memory:kube_pod_container_resource_requests:sum{})\n          -\n          (\n            # Skip clusters with only one allocatable node.\n            (\n              sum by (cluster) (kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"memory\"})\n              -\n              max by (cluster) (kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"memory\"})\n            ) > 0\n          ) > 0\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeCPUQuotaOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted CPU resource requests for Namespaces.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuquotaovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |\n        sum by(cluster) (\n          min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(cpu|requests.cpu)\"})\n        )\n        /\n        sum by(cluster) (\n          kube_node_status_allocatable{resource=\"cpu\", job=\"kube-state-metrics\"}\n        ) > 1.5\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeMemoryQuotaOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted memory resource requests for Namespaces.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryquotaovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |\n        sum by(cluster) (\n          min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(memory|requests.memory)\"})\n        )\n        /\n        sum by(cluster) (\n          kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}\n        ) > 1.5\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeQuotaAlmostFull\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaalmostfull\n        summary: Namespace quota is going to be full.\n      expr: |\n        max without (instance, job, type) (\n          kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n        )\n        / on (cluster, namespace, resource, resourcequota) group_left()\n        (\n          max without (instance, job, type) (\n            kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"}\n          ) > 0\n        )\n        > 0.9 < 1\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeQuotaFullyUsed\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotafullyused\n        summary: Namespace quota is fully used.\n      expr: |\n        max without (instance, job, type) (\n          kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n        )\n        / on (cluster, namespace, resource, resourcequota) group_left()\n        (\n          max without (instance, job, type) (\n            kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"}\n          ) > 0\n        )\n        == 1\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeQuotaExceeded\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaexceeded\n        summary: Namespace quota has exceeded the limits.\n      expr: |\n        max without (instance, job, type) (\n          kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n        )\n        / on (cluster, namespace, resource, resourcequota) group_left()\n        (\n          max without (instance, job, type) (\n            kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"}\n          ) > 0\n        ) > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: CPUThrottlingHigh\n      annotations:\n        description: '{{ $value | humanizePercentage }} throttling of CPU in namespace {{ $labels.namespace }} for container {{ $labels.container }} in pod {{ $labels.pod }} on cluster {{ $labels.cluster }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/cputhrottlinghigh\n        summary: Processes experience elevated CPU throttling.\n      expr: |\n        sum without (id, metrics_path, name, image, endpoint, job, node) (\n          topk by (cluster, namespace, pod, container, instance) (1,\n            increase(\n              container_cpu_cfs_throttled_periods_total{container!=\"\", job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }\n            [5m])\n          )\n        )\n        / on (cluster, namespace, pod, container, instance) group_left\n        sum without (id, metrics_path, name, image, endpoint, job, node) (\n          topk by (cluster, namespace, pod, container, instance) (1,\n            increase(\n              container_cpu_cfs_periods_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }\n            [5m])\n          )\n        )\n        > ( 25 / 100 )\n      for: 15m\n      labels:\n        severity: info\n  - name: kubernetes-storage\n    rules:\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n        description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} {{ with $labels.cluster -}} on Cluster {{ . }} {{- end }} is only {{ $value | humanizePercentage }} free.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n        description: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} {{ with $labels.cluster -}} on Cluster {{ . }} {{- end }} is expected to fill up within four days. Currently {{ $value | humanizePercentage }} is available.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n        description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} {{ with $labels.cluster -}} on Cluster {{ . }} {{- end }} only has {{ $value | humanizePercentage }} free inodes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n        description: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} {{ with $labels.cluster -}} on Cluster {{ . }} {{- end }} is expected to run out of inodes within four days. Currently {{ $value | humanizePercentage }} of its inodes are free.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(cluster, namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubePersistentVolumeErrors\n      annotations:\n        description: The persistent volume {{ $labels.persistentvolume }} {{ with $labels.cluster -}} on Cluster {{ . }} {{- end }} has status {{ $labels.phase }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeerrors\n        summary: PersistentVolume is having issues with provisioning.\n      expr: |\n        kube_persistentvolume_status_phase{phase=~\"Failed|Pending\",job=\"kube-state-metrics\"} > 0\n      for: 5m\n      labels:\n        severity: critical\n  - name: kubernetes-system\n    rules:\n    - alert: KubeVersionMismatch\n      annotations:\n        description: There are {{ $value }} different semantic versions of Kubernetes components running on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeversionmismatch\n        summary: Different semantic versions of Kubernetes components running.\n      expr: |\n        count by (cluster) (count by (git_version, cluster) (label_replace(kubernetes_build_info{job!~\"kube-dns|coredns\"},\"git_version\",\"$1\",\"git_version\",\"(v[0-9]*.[0-9]*).*\"))) > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeClientErrors\n      annotations:\n        description: Kubernetes API server client '{{ $labels.job }}/{{ $labels.instance }}' is experiencing {{ $value | humanizePercentage }} errors on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclienterrors\n        summary: Kubernetes API server client is experiencing errors.\n      expr: |\n        (sum(rate(rest_client_requests_total{job=\"apiserver\",code=~\"5..\"}[5m])) by (cluster, instance, job, namespace)\n          /\n        sum(rate(rest_client_requests_total{job=\"apiserver\"}[5m])) by (cluster, instance, job, namespace))\n        > 0.01\n      for: 15m\n      labels:\n        severity: warning\n  - name: kube-apiserver-slos\n    rules:\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum by(cluster) (apiserver_request:burnrate1h) > (14.40 * 0.01000)\n        and on(cluster)\n        sum by(cluster) (apiserver_request:burnrate5m) > (14.40 * 0.01000)\n      for: 2m\n      labels:\n        long: 1h\n        severity: critical\n        short: 5m\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum by(cluster) (apiserver_request:burnrate6h) > (6.00 * 0.01000)\n        and on(cluster)\n        sum by(cluster) (apiserver_request:burnrate30m) > (6.00 * 0.01000)\n      for: 15m\n      labels:\n        long: 6h\n        severity: critical\n        short: 30m\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum by(cluster) (apiserver_request:burnrate1d) > (3.00 * 0.01000)\n        and on(cluster)\n        sum by(cluster) (apiserver_request:burnrate2h) > (3.00 * 0.01000)\n      for: 1h\n      labels:\n        long: 1d\n        severity: warning\n        short: 2h\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum by(cluster) (apiserver_request:burnrate3d) > (1.00 * 0.01000)\n        and on(cluster)\n        sum by(cluster) (apiserver_request:burnrate6h) > (1.00 * 0.01000)\n      for: 3h\n      labels:\n        long: 3d\n        severity: warning\n        short: 6h\n  - name: kubernetes-system-apiserver\n    rules:\n    - alert: KubeClientCertificateExpiration\n      annotations:\n        description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 7.0 days on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: |\n        histogram_quantile(0.01, sum without (namespace, service, endpoint) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 604800\n        and\n        on(job, cluster, instance) apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeClientCertificateExpiration\n      annotations:\n        description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 24.0 hours on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: |\n        histogram_quantile(0.01, sum without (namespace, service, endpoint) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 86400\n        and\n        on(job, cluster, instance) apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0\n      for: 5m\n      labels:\n        severity: critical\n    - alert: KubeAggregatedAPIErrors\n      annotations:\n        description: Kubernetes aggregated API {{ $labels.instance }}/{{ $labels.name }} has reported {{ $labels.reason }} errors on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapierrors\n        summary: Kubernetes aggregated API has reported errors.\n      expr: |\n        sum by(cluster, instance, name, reason)(increase(aggregator_unavailable_apiservice_total{job=\"apiserver\"}[1m])) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeAggregatedAPIDown\n      annotations:\n        description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace }} has been only {{ $value | humanize }}% available over the last 10m on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapidown\n        summary: Kubernetes aggregated API is down.\n      expr: |\n        (1 - max by(name, namespace, cluster)(avg_over_time(aggregator_unavailable_apiservice{job=\"apiserver\"}[10m]))) * 100 < 85\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeAPIDown\n      annotations:\n        description: KubeAPI has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapidown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"apiserver\"})\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeAPITerminatedRequests\n      annotations:\n        description: The kubernetes apiserver has terminated {{ $value | humanizePercentage }} of its incoming requests on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapiterminatedrequests\n        summary: The kubernetes apiserver has terminated {{ $value | humanizePercentage }} of its incoming requests.\n      expr: |\n        sum by(cluster) (rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m])) / ( sum by(cluster) (rate(apiserver_request_total{job=\"apiserver\"}[10m])) + sum by(cluster) (rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m])) ) > 0.20\n      for: 5m\n      labels:\n        severity: warning\n  - name: kubernetes-system-kubelet\n    rules:\n    - alert: KubeNodeNotReady\n      annotations:\n        description: '{{ $labels.node }} has been unready for more than 15 minutes on cluster {{ $labels.cluster }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodenotready\n        summary: Node is not ready.\n      expr: |\n        kube_node_status_condition{job=\"kube-state-metrics\",condition=\"Ready\",status=\"true\"} == 0\n        and on (cluster, node)\n        kube_node_spec_unschedulable{job=\"kube-state-metrics\"} == 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeNodePressure\n      annotations:\n        description: '{{ $labels.node }} on cluster {{ $labels.cluster }} has active Condition {{ $labels.condition }}. This is caused by resource usage exceeding eviction thresholds.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodepressure\n        summary: Node has as active Condition.\n      expr: |\n        kube_node_status_condition{job=\"kube-state-metrics\",condition=~\"(MemoryPressure|DiskPressure|PIDPressure)\",status=\"true\"} == 1\n        and on (cluster, node)\n        kube_node_spec_unschedulable{job=\"kube-state-metrics\"} == 0\n      for: 10m\n      labels:\n        severity: info\n    - alert: KubeNodeUnreachable\n      annotations:\n        description: '{{ $labels.node }} is unreachable and some workloads may be rescheduled on cluster {{ $labels.cluster }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeunreachable\n        summary: Node is unreachable.\n      expr: |\n        (kube_node_spec_taint{job=\"kube-state-metrics\",key=\"node.kubernetes.io/unreachable\",effect=\"NoSchedule\"} unless ignoring(key,value) kube_node_spec_taint{job=\"kube-state-metrics\",key=~\"ToBeDeletedByClusterAutoscaler|cloud.google.com/impending-node-termination|aws-node-termination-handler/spot-itn\"}) == 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletTooManyPods\n      annotations:\n        description: Kubelet '{{ $labels.node }}' is running at {{ $value | humanizePercentage }} of its Pod capacity on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubelettoomanypods\n        summary: Kubelet is running at capacity.\n      expr: |\n        (\n          max by (cluster, instance) (\n            kubelet_running_pods{job=\"kubelet\", metrics_path=\"/metrics\"} > 1\n          )\n          * on (cluster, instance) group_left(node)\n          max by (cluster, instance, node) (\n            kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"}\n          )\n        )\n        / on (cluster, node) group_left()\n        max by (cluster, node) (\n          kube_node_status_capacity{job=\"kube-state-metrics\", resource=\"pods\"} != 1\n        ) > 0.95\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeNodeReadinessFlapping\n      annotations:\n        description: The readiness status of node {{ $labels.node }} has changed {{ $value }} times in the last 15 minutes on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodereadinessflapping\n        summary: Node readiness status is flapping.\n      expr: |\n        sum(changes(kube_node_status_condition{job=\"kube-state-metrics\",status=\"true\",condition=\"Ready\"}[15m])) by (cluster, node) > 2\n        and on (cluster, node)\n        kube_node_spec_unschedulable{job=\"kube-state-metrics\"} == 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeNodeEviction\n      annotations:\n        description: Node {{ $labels.node }} on {{ $labels.cluster }} is evicting Pods due to {{ $labels.eviction_signal }}.  Eviction occurs when eviction thresholds are crossed, typically caused by Pods exceeding RAM/ephemeral-storage limits.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeeviction\n        summary: Node is evicting pods.\n      expr: |\n        sum(rate(kubelet_evictions{job=\"kubelet\", metrics_path=\"/metrics\"}[15m])) by(cluster, eviction_signal, instance)\n        * on (cluster, instance) group_left(node)\n        max by (cluster, instance, node) (\n          kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"}\n        )\n        > 0\n      for: 0s\n      labels:\n        severity: info\n    - alert: KubeletPlegDurationHigh\n      annotations:\n        description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{ $value }} seconds on node {{ $labels.node }} on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletplegdurationhigh\n        summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist.\n      expr: |\n        node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile{quantile=\"0.99\"} >= 10\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeletPodStartUpLatencyHigh\n      annotations:\n        description: Kubelet Pod startup 99th percentile latency is {{ $value }} seconds on node {{ $labels.node }} on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletpodstartuplatencyhigh\n        summary: Kubelet Pod startup latency is too high.\n      expr: |\n        histogram_quantile(0.99,\n          sum by (cluster, instance, le) (\n            topk by (cluster, instance, le, operation_type) (1,\n              rate(kubelet_pod_worker_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])\n            )\n          )\n        )\n        * on(cluster, instance) group_left(node)\n        topk by (cluster, instance, node) (1,\n          kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"}\n        )\n        > 60\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n        description: Client certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }} on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_client_ttl_seconds < 604800\n      labels:\n        severity: warning\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n        description: Client certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }} on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_client_ttl_seconds < 86400\n      labels:\n        severity: critical\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n        description: Server certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }} on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_server_ttl_seconds < 604800\n      labels:\n        severity: warning\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n        description: Server certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }} on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_server_ttl_seconds < 86400\n      labels:\n        severity: critical\n    - alert: KubeletClientCertificateRenewalErrors\n      annotations:\n        description: Kubelet on node {{ $labels.node }} has failed to renew its client certificate ({{ $value | humanize }} errors in the last 5 minutes) on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificaterenewalerrors\n        summary: Kubelet has failed to renew its client certificate.\n      expr: |\n        increase(kubelet_certificate_manager_client_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletServerCertificateRenewalErrors\n      annotations:\n        description: Kubelet on node {{ $labels.node }} has failed to renew its server certificate ({{ $value | humanize }} errors in the last 5 minutes) on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificaterenewalerrors\n        summary: Kubelet has failed to renew its server certificate.\n      expr: |\n        increase(kubelet_server_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletDown\n      annotations:\n        description: Kubelet has disappeared from Prometheus target discovery on cluster {{ $labels.cluster }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        count by (cluster) (kube_node_info{job=\"kube-state-metrics\"})\n        unless on (cluster)\n        count by (cluster) (up{job=\"kubelet\", metrics_path=\"/metrics\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n  - name: kubernetes-system-scheduler\n    rules:\n    - alert: KubeSchedulerDown\n      annotations:\n        description: KubeScheduler has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeschedulerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kube-scheduler\"})\n      for: 15m\n      labels:\n        severity: critical\n  - name: kubernetes-system-controller-manager\n    rules:\n    - alert: KubeControllerManagerDown\n      annotations:\n        description: KubeControllerManager has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontrollermanagerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kube-controller-manager\"})\n      for: 15m\n      labels:\n        severity: critical\n  - interval: 3m\n    name: kube-apiserver-availability.rules\n    rules:\n    - expr: |\n        avg_over_time(code_verb:apiserver_request_total:increase1h[30d]) * 24 * 30\n      record: code_verb:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"LIST|GET\"})\n      labels:\n        verb: read\n      record: code:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n      labels:\n        verb: write\n      record: code:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, verb, scope, le) (increase(apiserver_request_sli_duration_seconds_bucket[1h]))\n      record: cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase1h\n    - expr: |\n        sum by (cluster, verb, scope, le) (avg_over_time(cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase1h[30d]) * 24 * 30)\n      record: cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d\n    - expr: |\n        sum by (cluster, verb, scope) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase1h{le=\"+Inf\"})\n      record: cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase1h\n    - expr: |\n        sum by (cluster, verb, scope) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{le=\"+Inf\"})\n      record: cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d\n    - expr: |\n        1 - (\n          (\n            # write too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"} or vector(0))\n          ) +\n          (\n            # read too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n            -\n            (\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"} or vector(0))\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"} or vector(0))\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"} or vector(0))\n            )\n          ) +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d)\n      labels:\n        verb: all\n      record: apiserver_request:availability30d\n    - expr: |\n        1 - (\n          sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n          -\n          (\n            # too slow\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"} or vector(0))\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"} or vector(0))\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"} or vector(0))\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n      labels:\n        verb: read\n      record: apiserver_request:availability30d\n    - expr: |\n        1 - (\n          (\n            # too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"} or vector(0))\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n      labels:\n        verb: write\n      record: apiserver_request:availability30d\n    - expr: |\n        sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: |\n        sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"2..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"3..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"4..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n  - name: kube-apiserver-burnrate.rules\n    rules:\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"}[1d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=~\"5(\\\\.0)?\"}[1d]))\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=~\"30(\\\\.0)?\"}[1d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1d]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate1d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"}[1h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=~\"5(\\\\.0)?\"}[1h]))\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=~\"30(\\\\.0)?\"}[1h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate1h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"}[2h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=~\"5(\\\\.0)?\"}[2h]))\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=~\"30(\\\\.0)?\"}[2h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[2h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate2h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"}[30m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=~\"5(\\\\.0)?\"}[30m]))\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=~\"30(\\\\.0)?\"}[30m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[30m]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate30m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"}[3d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=~\"5(\\\\.0)?\"}[3d]))\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=~\"30(\\\\.0)?\"}[3d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[3d]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate3d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"}[5m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=~\"5(\\\\.0)?\"}[5m]))\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=~\"30(\\\\.0)?\"}[5m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate5m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"}[6h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=~\"5(\\\\.0)?\"}[6h]))\n              +\n              sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=~\"30(\\\\.0)?\"}[6h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[6h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate6h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=~\"1(\\\\.0)?\"}[1d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1d]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate1d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=~\"1(\\\\.0)?\"}[1h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate1h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=~\"1(\\\\.0)?\"}[2h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[2h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate2h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=~\"1(\\\\.0)?\"}[30m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[30m]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate30m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=~\"1(\\\\.0)?\"}[3d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[3d]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate3d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=~\"1(\\\\.0)?\"}[5m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate5m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            sum by (cluster) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=~\"1(\\\\.0)?\"}[6h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[6h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate6h\n  - name: kube-apiserver-histogram.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: \"0.99\"\n        verb: read\n      record: cluster_quantile:apiserver_request_sli_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_sli_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: \"0.99\"\n        verb: write\n      record: cluster_quantile:apiserver_request_sli_duration_seconds:histogram_quantile\n  - name: k8s.rules.container_cpu_usage_seconds_total\n    rules:\n    - expr: |\n        sum by (cluster, namespace, pod, container) (\n          rate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n        ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n          1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m\n    - expr: |\n        sum by (cluster, namespace, pod, container) (\n          irate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n        ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n          1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate\n  - name: k8s.rules.container_memory_working_set_bytes\n    rules:\n    - expr: |\n        container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_working_set_bytes\n  - name: k8s.rules.container_memory_rss\n    rules:\n    - expr: |\n        container_memory_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_rss\n  - name: k8s.rules.container_memory_cache\n    rules:\n    - expr: |\n        container_memory_cache{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_cache\n  - name: k8s.rules.container_memory_swap\n    rules:\n    - expr: |\n        container_memory_swap{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_swap\n  - name: k8s.rules.container_memory_requests\n    rules:\n    - expr: |\n        kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_requests\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_requests:sum\n  - name: k8s.rules.container_cpu_requests\n    rules:\n    - expr: |\n        kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_requests:sum\n  - name: k8s.rules.container_memory_limits\n    rules:\n    - expr: |\n        kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_limits\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_limits:sum\n  - name: k8s.rules.container_cpu_limits\n    rules:\n    - expr: |\n        kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_limits:sum\n  - name: k8s.rules.pod_owner\n    rules:\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            label_replace(\n              kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n              \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n            ) * on (cluster, replicaset, namespace) group_left(owner_name) topk by(cluster, replicaset, namespace) (\n              1, max by (cluster, replicaset, namespace, owner_name) (\n                kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind=\"\"}\n              )\n            ),\n            \"workload\", \"$1\", \"replicaset\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: replicaset\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            label_replace(\n              kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n              \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n            ) * on(replicaset, namespace, cluster) group_left(owner_name) topk by(cluster, replicaset, namespace) (\n              1, max by (cluster, replicaset, namespace, owner_name) (\n                kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind=\"Deployment\"}\n              )\n            ),\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: deployment\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"DaemonSet\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: daemonset\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n          \"workload\", \"$1\", \"owner_name\", \"(.*)\")\n        )\n      labels:\n        workload_type: statefulset\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        group by (cluster, namespace, workload, pod) (\n          label_join(\n            group by (cluster, namespace, job_name, pod, owner_name) (\n              label_join(\n                kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"}\n              , \"job_name\", \"\", \"owner_name\")\n            )\n            * on (cluster, namespace, job_name) group_left()\n            group by (cluster, namespace, job_name) (\n              kube_job_owner{job=\"kube-state-metrics\", owner_kind=~\"Pod|\"}\n            )\n          , \"workload\", \"\", \"owner_name\")\n        )\n      labels:\n        workload_type: job\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"\", owner_name=\"\"},\n          \"workload\", \"$1\", \"pod\", \"(.+)\")\n        )\n      labels:\n        workload_type: barepod\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Node\"},\n          \"workload\", \"$1\", \"pod\", \"(.+)\")\n        )\n      labels:\n        workload_type: staticpod\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        group by (cluster, namespace, workload, workload_type, pod) (\n          label_join(\n            label_join(\n              group by (cluster, namespace, job_name, pod) (\n                label_join(\n                  kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"}\n                , \"job_name\", \"\", \"owner_name\")\n              )\n              * on (cluster, namespace, job_name) group_left(owner_kind, owner_name)\n              group by (cluster, namespace, job_name, owner_kind, owner_name) (\n                kube_job_owner{job=\"kube-state-metrics\", owner_kind!=\"Pod\", owner_kind!=\"\"}\n              )\n            , \"workload\", \"\", \"owner_name\")\n          , \"workload_type\", \"\", \"owner_kind\")\n\n          OR\n\n          label_replace(\n            label_replace(\n              label_replace(\n                kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"}\n                , \"replicaset\", \"$1\", \"owner_name\", \"(.+)\"\n              )\n              * on(cluster, namespace, replicaset) group_left(owner_kind, owner_name)\n              group by (cluster, namespace, replicaset, owner_kind, owner_name) (\n                kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind!=\"Deployment\", owner_kind!=\"\"}\n              )\n            , \"workload\", \"$1\", \"owner_name\", \"(.+)\")\n            OR\n            label_replace(\n              group by (cluster, namespace, pod, owner_name, owner_kind) (\n                kube_pod_owner{job=\"kube-state-metrics\", owner_kind!=\"ReplicaSet\", owner_kind!=\"DaemonSet\", owner_kind!=\"StatefulSet\", owner_kind!=\"Job\", owner_kind!=\"Node\", owner_kind!=\"\"}\n              )\n              , \"workload\", \"$1\", \"owner_name\", \"(.+)\"\n            )\n          , \"workload_type\", \"$1\", \"owner_kind\", \"(.+)\")\n        )\n      record: namespace_workload_pod:kube_pod_owner:relabel\n  - name: kube-scheduler.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_scheduling_attempt_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_scheduling_attempt_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_pod_scheduling_sli_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_pod_scheduling_sli_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_scheduling_attempt_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_scheduling_attempt_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_pod_scheduling_sli_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_pod_scheduling_sli_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_scheduling_attempt_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_scheduling_attempt_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_pod_scheduling_sli_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_pod_scheduling_sli_duration_seconds:histogram_quantile\n  - name: node.rules\n    rules:\n    - expr: |\n        topk by(cluster, namespace, pod) (1,\n          max by (cluster, node, namespace, pod) (\n            label_replace(kube_pod_info{job=\"kube-state-metrics\",node!=\"\"}, \"pod\", \"$1\", \"pod\", \"(.*)\")\n        ))\n      record: 'node_namespace_pod:kube_pod_info:'\n    - expr: |\n        count by (cluster, node) (\n          node_cpu_seconds_total{mode=\"idle\",job=\"node-exporter\"}\n          * on (cluster, namespace, pod) group_left(node)\n          topk by(cluster, namespace, pod) (1, node_namespace_pod:kube_pod_info:)\n        )\n      record: node:node_num_cpu:sum\n    - expr: |\n        sum(\n          node_memory_MemAvailable_bytes{job=\"node-exporter\"} or\n          (\n            node_memory_Buffers_bytes{job=\"node-exporter\"} +\n            node_memory_Cached_bytes{job=\"node-exporter\"} +\n            node_memory_MemFree_bytes{job=\"node-exporter\"} +\n            node_memory_Slab_bytes{job=\"node-exporter\"}\n          )\n        ) by (cluster)\n      record: :node_memory_MemAvailable_bytes:sum\n    - expr: |\n        avg by (cluster, node) (\n          sum without (mode) (\n            rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\",job=\"node-exporter\"}[5m])\n          )\n        )\n      record: node:node_cpu_utilization:ratio_rate5m\n    - expr: |\n        avg by (cluster) (\n          node:node_cpu_utilization:ratio_rate5m\n        )\n      record: cluster:node_cpu:ratio_rate5m\n  - name: kubelet.rules\n    rules:\n    - expr: |\n        histogram_quantile(\n          0.99,\n          sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le)\n          * on(cluster, instance) group_left (node)\n          max by (cluster, instance, node) (kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n        )\n      labels:\n        quantile: \"0.99\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(\n          0.9,\n          sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le)\n          * on(cluster, instance) group_left (node)\n          max by (cluster, instance, node) (kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n        )\n      labels:\n        quantile: \"0.9\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(\n          0.5,\n          sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le)\n          * on(cluster, instance) group_left (node)\n          max by (cluster, instance, node) (kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n        )\n      labels:\n        quantile: \"0.5\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n"
  },
  {
    "path": "manifests/kubernetesControlPlane-serviceMonitorApiserver.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: kubernetes\n    app.kubernetes.io/name: apiserver\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-apiserver\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers|storage_db_total_size_in_bytes|flowcontrol_request_concurrency_limit|flowcontrol_request_concurrency_in_use|storage_objects)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(debugging|disk|server).*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_admission_controller_admission_latencies_seconds_.*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_admission_step_admission_latencies_seconds_.*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (apiserver_request|apiserver_request_sli|etcd_request)_duration_seconds_bucket;(0.15|0.25|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2.5|3|3.5|4.5|6|7|8|9|15|25|30|50)\n      sourceLabels:\n      - __name__\n      - le\n    - action: drop\n      regex: apiserver_request_body_size_bytes_bucket;(150000|350000|550000|650000|850000|950000|(1\\.15|1\\.35|1\\.55|1\\.65|1\\.85|1\\.95|2\\.15|2\\.35|2\\.55|2\\.65|2\\.85|2\\.95)e\\+06)\n      sourceLabels:\n      - __name__\n      - le\n    port: https\n    scheme: https\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      serverName: kubernetes\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 5s\n    metricRelabelings:\n    - action: drop\n      regex: process_start_time_seconds\n      sourceLabels:\n      - __name__\n    path: /metrics/slis\n    port: https\n    scheme: https\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      serverName: kubernetes\n  jobLabel: component\n  namespaceSelector:\n    matchNames:\n    - default\n  selector:\n    matchLabels:\n      component: apiserver\n      provider: kubernetes\n"
  },
  {
    "path": "manifests/kubernetesControlPlane-serviceMonitorCoreDNS.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: kubernetes\n    app.kubernetes.io/name: coredns\n    app.kubernetes.io/part-of: kube-prometheus\n  name: coredns\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 15s\n    metricRelabelings:\n    - action: drop\n      regex: coredns_cache_misses_total\n      sourceLabels:\n      - __name__\n    port: metrics\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      k8s-app: kube-dns\n"
  },
  {
    "path": "manifests/kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: kubernetes\n    app.kubernetes.io/name: kube-controller-manager\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-controller-manager\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers|storage_db_total_size_in_bytes|flowcontrol_request_concurrency_limit|flowcontrol_request_concurrency_in_use|storage_objects)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(debugging|disk|request|server).*\n      sourceLabels:\n      - __name__\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 5s\n    metricRelabelings:\n    - action: drop\n      regex: process_start_time_seconds\n      sourceLabels:\n      - __name__\n    path: /metrics/slis\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-controller-manager\n"
  },
  {
    "path": "manifests/kubernetesControlPlane-serviceMonitorKubeScheduler.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: kubernetes\n    app.kubernetes.io/name: kube-scheduler\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-scheduler\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 5s\n    metricRelabelings:\n    - action: drop\n      regex: process_start_time_seconds\n      sourceLabels:\n      - __name__\n    path: /metrics/slis\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-scheduler\n"
  },
  {
    "path": "manifests/kubernetesControlPlane-serviceMonitorKubelet.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: kubernetes\n    app.kubernetes.io/name: kubelet\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kubelet\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers|storage_db_total_size_in_bytes|flowcontrol_request_concurrency_limit|flowcontrol_request_concurrency_in_use|storage_objects)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    honorTimestamps: false\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (container_spec_.*|container_file_descriptors|container_sockets|container_threads_max|container_threads|container_start_time_seconds|container_last_seen);;\n      sourceLabels:\n      - __name__\n      - pod\n      - namespace\n    - action: drop\n      regex: (container_blkio_device_usage_total);.+\n      sourceLabels:\n      - __name__\n      - container\n    path: /metrics/cadvisor\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    path: /metrics/probes\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 5s\n    metricRelabelings:\n    - action: drop\n      regex: process_start_time_seconds\n      sourceLabels:\n      - __name__\n    path: /metrics/slis\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kubelet\n"
  },
  {
    "path": "manifests/nodeExporter-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n  name: node-exporter\nrules:\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n"
  },
  {
    "path": "manifests/nodeExporter-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n  name: node-exporter\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: node-exporter\nsubjects:\n- kind: ServiceAccount\n  name: node-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/nodeExporter-daemonset.yaml",
    "content": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n  name: node-exporter\n  namespace: monitoring\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: node-exporter\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: node-exporter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 1.10.2\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --web.listen-address=127.0.0.1:9101\n        - --path.sysfs=/host/sys\n        - --path.rootfs=/host/root\n        - --path.procfs=/host/root/proc\n        - --path.udev.data=/host/root/run/udev/data\n        - --no-collector.wifi\n        - --no-collector.hwmon\n        - --no-collector.btrfs\n        - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)\n        - --collector.netclass.ignored-devices=^(veth.*|[a-f0-9]{15})$\n        - --collector.netdev.device-exclude=^(veth.*|[a-f0-9]{15})$\n        image: quay.io/prometheus/node-exporter:v1.10.2\n        name: node-exporter\n        resources:\n          limits:\n            cpu: 250m\n            memory: 180Mi\n          requests:\n            cpu: 102m\n            memory: 180Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            add:\n            - SYS_TIME\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        volumeMounts:\n        - mountPath: /host/sys\n          mountPropagation: HostToContainer\n          name: sys\n          readOnly: true\n        - mountPath: /host/root\n          mountPropagation: HostToContainer\n          name: root\n          readOnly: true\n      - args:\n        - --secure-listen-address=[$(IP)]:9100\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:9101/\n        env:\n        - name: IP\n          valueFrom:\n            fieldRef:\n              fieldPath: status.podIP\n        image: quay.io/brancz/kube-rbac-proxy:v0.21.0\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 9100\n          hostPort: 9100\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n          seccompProfile:\n            type: RuntimeDefault\n      hostNetwork: true\n      hostPID: true\n      nodeSelector:\n        kubernetes.io/os: linux\n      priorityClassName: system-cluster-critical\n      securityContext:\n        runAsGroup: 65534\n        runAsNonRoot: true\n        runAsUser: 65534\n      serviceAccountName: node-exporter\n      tolerations:\n      - operator: Exists\n      volumes:\n      - hostPath:\n          path: /sys\n        name: sys\n      - hostPath:\n          path: /\n        name: root\n  updateStrategy:\n    rollingUpdate:\n      maxUnavailable: 10%\n    type: RollingUpdate\n"
  },
  {
    "path": "manifests/nodeExporter-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n  name: node-exporter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9100\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/nodeExporter-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n    prometheus: k8s\n    role: alert-rules\n  name: node-exporter-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: node-exporter\n    rules:\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left and is filling up.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 24 hours.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 15\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left and is filling up fast.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 4 hours.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 10\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 5% space left.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: warning\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 3% space left.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: critical\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left and is filling up.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 24 hours.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 40\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left and is filling up fast.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 4 hours.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 20\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 5% inodes left.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n        description: Filesystem on {{ $labels.device }}, mounted on {{ $labels.mountpoint }}, at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 3% inodes left.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeNetworkReceiveErrs\n      annotations:\n        description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf \"%.0f\" $value }} receive errors in the last two minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworkreceiveerrs\n        summary: Network interface is reporting many receive errors.\n      expr: |\n        rate(node_network_receive_errs_total{job=\"node-exporter\"}[2m]) / rate(node_network_receive_packets_total{job=\"node-exporter\"}[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeNetworkTransmitErrs\n      annotations:\n        description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf \"%.0f\" $value }} transmit errors in the last two minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworktransmiterrs\n        summary: Network interface is reporting many transmit errors.\n      expr: |\n        rate(node_network_transmit_errs_total{job=\"node-exporter\"}[2m]) / rate(node_network_transmit_packets_total{job=\"node-exporter\"}[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeHighNumberConntrackEntriesUsed\n      annotations:\n        description: '{{ $labels.instance }} {{ $value | humanizePercentage }} of conntrack entries are used.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodehighnumberconntrackentriesused\n        summary: Number of conntrack are getting close to the limit.\n      expr: |\n        (node_nf_conntrack_entries{job=\"node-exporter\"} / node_nf_conntrack_entries_limit) > 0.75\n      labels:\n        severity: warning\n    - alert: NodeTextFileCollectorScrapeError\n      annotations:\n        description: Node Exporter text file collector on {{ $labels.instance }} failed to scrape.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodetextfilecollectorscrapeerror\n        summary: Node Exporter text file collector failed to scrape.\n      expr: |\n        node_textfile_scrape_error{job=\"node-exporter\"} == 1\n      labels:\n        severity: warning\n    - alert: NodeClockSkewDetected\n      annotations:\n        description: Clock at {{ $labels.instance }} is out of sync by more than 0.05s. Ensure NTP is configured correctly on this host.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclockskewdetected\n        summary: Clock skew detected.\n      expr: |\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} > 0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) >= 0\n        )\n        or\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} < -0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) <= 0\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: NodeClockNotSynchronising\n      annotations:\n        description: Clock at {{ $labels.instance }} is not synchronising. Ensure NTP is configured on this host.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclocknotsynchronising\n        summary: Clock not synchronising.\n      expr: |\n        min_over_time(node_timex_sync_status{job=\"node-exporter\"}[5m]) == 0\n        and\n        node_timex_maxerror_seconds{job=\"node-exporter\"} >= 16\n      for: 10m\n      labels:\n        severity: warning\n    - alert: NodeRAIDDegraded\n      annotations:\n        description: RAID array '{{ $labels.device }}' at {{ $labels.instance }} is in degraded state due to one or more disks failures. Number of spare drives is insufficient to fix issue automatically.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddegraded\n        summary: RAID Array is degraded.\n      expr: |\n        node_md_disks_required{job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} - ignoring (state) (node_md_disks{state=\"active\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}) > 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: NodeRAIDDiskFailure\n      annotations:\n        description: At least one device in RAID array at {{ $labels.instance }} failed. Array '{{ $labels.device }}' needs attention and possibly a disk swap.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddiskfailure\n        summary: Failed device in RAID array.\n      expr: |\n        node_md_disks{state=\"failed\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} > 0\n      labels:\n        severity: warning\n    - alert: NodeFileDescriptorLimit\n      annotations:\n        description: File descriptors limit at {{ $labels.instance }} is currently at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 70\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: NodeFileDescriptorLimit\n      annotations:\n        description: File descriptors limit at {{ $labels.instance }} is currently at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 90\n        )\n      for: 15m\n      labels:\n        severity: critical\n    - alert: NodeCPUHighUsage\n      annotations:\n        description: |\n          CPU usage at {{ $labels.instance }} has been above 90% for the last 15 minutes, is currently at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodecpuhighusage\n        summary: High CPU usage.\n      expr: |\n        sum without(mode) (avg without (cpu) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode!~\"idle|iowait\"}[2m]))) * 100 > 90\n      for: 15m\n      labels:\n        severity: info\n    - alert: NodeSystemSaturation\n      annotations:\n        description: |\n          System load per core at {{ $labels.instance }} has been above 2 for the last 15 minutes, is currently at {{ printf \"%.2f\" $value }}.\n          This might indicate this instance resources saturation and can cause it becoming unresponsive.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodesystemsaturation\n        summary: System saturated, load per core is very high.\n      expr: |\n        node_load1{job=\"node-exporter\"}\n        / count without (cpu, mode) (node_cpu_seconds_total{job=\"node-exporter\", mode=\"idle\"}) > 2\n      for: 15m\n      labels:\n        severity: warning\n    - alert: NodeMemoryMajorPagesFaults\n      annotations:\n        description: |\n          Memory major pages are occurring at very high rate at {{ $labels.instance }}, 500 major page faults per second for the last 15 minutes, is currently at {{ printf \"%.2f\" $value }}.\n          Please check that there is enough memory available at this instance.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodememorymajorpagesfaults\n        summary: Memory major page faults are occurring at very high rate.\n      expr: |\n        rate(node_vmstat_pgmajfault{job=\"node-exporter\"}[5m]) > 500\n      for: 15m\n      labels:\n        severity: warning\n    - alert: NodeMemoryHighUtilization\n      annotations:\n        description: |\n          Memory is filling up at {{ $labels.instance }}, has been above 90% for the last 15 minutes, is currently at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodememoryhighutilization\n        summary: Host is running out of memory.\n      expr: |\n        100 - (node_memory_MemAvailable_bytes{job=\"node-exporter\"} / node_memory_MemTotal_bytes{job=\"node-exporter\"} * 100) > 90\n      for: 15m\n      labels:\n        severity: warning\n    - alert: NodeDiskIOSaturation\n      annotations:\n        description: |\n          Disk IO queue (aqu-sq) is high on {{ $labels.device }} at {{ $labels.instance }}, has been above 10 for the last 30 minutes, is currently at {{ printf \"%.2f\" $value }}.\n          This symptom might indicate disk saturation.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodediskiosaturation\n        summary: Disk IO queue is high.\n      expr: |\n        rate(node_disk_io_time_weighted_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m]) > 10\n      for: 30m\n      labels:\n        severity: warning\n    - alert: NodeSystemdServiceFailed\n      annotations:\n        description: Systemd service {{ $labels.name }} has entered failed state at {{ $labels.instance }}\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodesystemdservicefailed\n        summary: Systemd service has entered failed state.\n      expr: |\n        node_systemd_unit_state{job=\"node-exporter\", state=\"failed\"} == 1\n      for: 5m\n      labels:\n        severity: warning\n    - alert: NodeSystemdServiceCrashlooping\n      annotations:\n        description: Systemd service {{ $labels.name }} has being restarted too many times at {{ $labels.instance }} for the last 15 minutes. Please check if service is crash looping.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodesystemdservicecrashlooping\n        summary: Systemd service keeps restaring, possibly crash looping.\n      expr: |\n        increase(node_systemd_service_restart_total{job=\"node-exporter\"}[5m]) > 2\n      for: 15m\n      labels:\n        severity: warning\n    - alert: NodeBondingDegraded\n      annotations:\n        description: Bonding interface {{ $labels.master }} on {{ $labels.instance }} is in degraded state due to one or more slave failures.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodebondingdegraded\n        summary: Bonding interface is degraded.\n      expr: |\n        (node_bonding_slaves{job=\"node-exporter\"} - node_bonding_active{job=\"node-exporter\"}) != 0\n      for: 5m\n      labels:\n        severity: warning\n  - name: node-exporter.rules\n    rules:\n    - expr: |\n        count without (cpu, mode) (\n          node_cpu_seconds_total{job=\"node-exporter\",mode=\"idle\"}\n        )\n      record: instance:node_num_cpu:sum\n    - expr: |\n        1 - avg without (cpu) (\n          sum without (mode) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode=~\"idle|iowait|steal\"}[5m]))\n        )\n      record: instance:node_cpu_utilisation:rate5m\n    - expr: |\n        (\n          node_load1{job=\"node-exporter\"}\n        /\n          instance:node_num_cpu:sum{job=\"node-exporter\"}\n        )\n      record: instance:node_load1_per_cpu:ratio\n    - expr: |\n        1 - (\n          (\n            node_memory_MemAvailable_bytes{job=\"node-exporter\"}\n            or\n            (\n              node_memory_Buffers_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Cached_bytes{job=\"node-exporter\"}\n              +\n              node_memory_MemFree_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Slab_bytes{job=\"node-exporter\"}\n            )\n          )\n        /\n          node_memory_MemTotal_bytes{job=\"node-exporter\"}\n        )\n      record: instance:node_memory_utilisation:ratio\n    - expr: |\n        rate(node_vmstat_pgmajfault{job=\"node-exporter\"}[5m])\n      record: instance:node_vmstat_pgmajfault:rate5m\n    - expr: |\n        rate(node_disk_io_time_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_seconds:rate5m\n    - expr: |\n        rate(node_disk_io_time_weighted_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_weighted_seconds:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_bytes_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_bytes_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_drop_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_drop_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_bytes_total{job=\"node-exporter\", device!~\"lo|veth.+\"}[5m])\n        )\n      record: instance:node_network_receive_bytes_physical:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_bytes_total{job=\"node-exporter\", device!~\"lo|veth.+\"}[5m])\n        )\n      record: instance:node_network_transmit_bytes_physical:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_drop_total{job=\"node-exporter\", device!~\"lo|veth.+\"}[5m])\n        )\n      record: instance:node_network_receive_drop_physical:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_drop_total{job=\"node-exporter\", device!~\"lo|veth.+\"}[5m])\n        )\n      record: instance:node_network_transmit_drop_physical:rate5m\n"
  },
  {
    "path": "manifests/nodeExporter-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n  name: node-exporter\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https\n    port: 9100\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/nodeExporter-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n  name: node-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/nodeExporter-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.10.2\n  name: node-exporter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 15s\n    port: https\n    relabelings:\n    - action: replace\n      regex: (.*)\n      replacement: $1\n      sourceLabels:\n      - __meta_kubernetes_pod_node_name\n      targetLabel: instance\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/prometheus-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes/metrics\n  verbs:\n  - get\n- nonResourceURLs:\n  - /metrics\n  - /metrics/slis\n  verbs:\n  - get\n"
  },
  {
    "path": "manifests/prometheus-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-k8s\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheus-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9090\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus-adapter\n    ports:\n    - port: 9090\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: grafana\n    ports:\n    - port: 9090\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/prometheus-podDisruptionBudget.yaml",
    "content": "apiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  minAvailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/prometheus-prometheus.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: k8s\n  namespace: monitoring\nspec:\n  alerting:\n    alertmanagers:\n    - apiVersion: v2\n      name: alertmanager-main\n      namespace: monitoring\n      port: web\n  enableFeatures: []\n  externalLabels: {}\n  image: quay.io/prometheus/prometheus:v3.10.0\n  nodeSelector:\n    kubernetes.io/os: linux\n  podMetadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 3.10.0\n  podMonitorNamespaceSelector: {}\n  podMonitorSelector: {}\n  probeNamespaceSelector: {}\n  probeSelector: {}\n  replicas: 2\n  resources:\n    requests:\n      memory: 400Mi\n  ruleNamespaceSelector: {}\n  ruleSelector: {}\n  scrapeConfigNamespaceSelector: {}\n  scrapeConfigSelector: {}\n  securityContext:\n    fsGroup: 2000\n    runAsNonRoot: true\n    runAsUser: 1000\n  serviceAccountName: prometheus-k8s\n  serviceDiscoveryRole: EndpointSlice\n  serviceMonitorNamespaceSelector: {}\n  serviceMonitorSelector: {}\n  version: 3.10.0\n"
  },
  {
    "path": "manifests/prometheus-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n    prometheus: k8s\n    role: alert-rules\n  name: prometheus-k8s-prometheus-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: prometheus\n    rules:\n    - alert: PrometheusBadConfig\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to reload its configuration.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusbadconfig\n        summary: Failed Prometheus configuration reload.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_config_last_reload_successful{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n    - alert: PrometheusSDRefreshFailure\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to refresh SD with mechanism {{$labels.mechanism}}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheussdrefreshfailure\n        summary: Failed Prometheus SD refresh.\n      expr: |\n        increase(prometheus_sd_refresh_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[10m]) > 0\n      for: 20m\n      labels:\n        severity: warning\n    - alert: PrometheusKubernetesListWatchFailures\n      annotations:\n        description: Kubernetes service discovery of Prometheus {{$labels.namespace}}/{{$labels.pod}} is experiencing {{ printf \"%.0f\" $value }} failures with LIST/WATCH requests to the Kubernetes API in the last 5 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuskuberneteslistwatchfailures\n        summary: Requests in Kubernetes SD are failing.\n      expr: |\n        increase(prometheus_sd_kubernetes_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusNotificationQueueRunningFull\n      annotations:\n        description: Alert notification queue of Prometheus {{$labels.namespace}}/{{$labels.pod}} is running full.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotificationqueuerunningfull\n        summary: Prometheus alert notification queue predicted to run full in less than 30m.\n      expr: |\n        # Without min_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          predict_linear(prometheus_notifications_queue_length{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m], 60 * 30)\n        >\n          min_over_time(prometheus_notifications_queue_capacity{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusErrorSendingAlertsToSomeAlertmanagers\n      annotations:\n        description: '{{ printf \"%.1f\" $value }}% of alerts sent by Prometheus {{$labels.namespace}}/{{$labels.pod}} to Alertmanager {{$labels.alertmanager}} were affected by errors.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstosomealertmanagers\n        summary: More than 1% of alerts sent by Prometheus to a specific Alertmanager were affected by errors.\n      expr: |\n        (\n          rate(prometheus_notifications_errors_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusNotConnectedToAlertmanagers\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not connected to any Alertmanagers.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotconnectedtoalertmanagers\n        summary: Prometheus is not connected to any Alertmanagers.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_notifications_alertmanagers_discovered{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) < 1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusTSDBReloadsFailing\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected {{$value | humanize}} reload failures over the last 3h.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbreloadsfailing\n        summary: Prometheus has issues reloading blocks from disk.\n      expr: |\n        increase(prometheus_tsdb_reloads_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n    - alert: PrometheusTSDBCompactionsFailing\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected {{$value | humanize}} compaction failures over the last 3h.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbcompactionsfailing\n        summary: Prometheus has issues compacting blocks.\n      expr: |\n        increase(prometheus_tsdb_compactions_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n    - alert: PrometheusNotIngestingSamples\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not ingesting samples.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotingestingsamples\n        summary: Prometheus is not ingesting samples.\n      expr: |\n        (\n          sum without(type) (rate(prometheus_tsdb_head_samples_appended_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])) <= 0\n        and\n          (\n            sum without(scrape_job) (prometheus_target_metadata_cache_entries{job=\"prometheus-k8s\",namespace=\"monitoring\"}) > 0\n          or\n            sum without(rule_group) (prometheus_rule_group_rules{job=\"prometheus-k8s\",namespace=\"monitoring\"}) > 0\n          )\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusDuplicateTimestamps\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping {{ printf \"%.4g\" $value  }} samples/s with different values but duplicated timestamp.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusduplicatetimestamps\n        summary: Prometheus is dropping samples with duplicate timestamps.\n      expr: |\n        rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOutOfOrderTimestamps\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping {{ printf \"%.4g\" $value  }} samples/s with timestamps arriving out of order.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusoutofordertimestamps\n        summary: Prometheus drops samples with out-of-order timestamps.\n      expr: |\n        rate(prometheus_target_scrapes_sample_out_of_order_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusRemoteStorageFailures\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} failed to send {{ printf \"%.1f\" $value }}% of the samples to {{ $labels.remote_name}}:{{ $labels.url }}\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotestoragefailures\n        summary: Prometheus fails to send samples to remote storage.\n      expr: |\n        (\n          (rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n        /\n          (\n            (rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n          +\n            (rate(prometheus_remote_storage_succeeded_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n          )\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusRemoteWriteBehind\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write is {{ printf \"%.1f\" $value }}s behind for {{ $labels.remote_name}}:{{ $labels.url }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritebehind\n        summary: Prometheus remote write is behind.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_queue_highest_timestamp_seconds{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        -\n          max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n        > 120\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusRemoteWriteDesiredShards\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write desired shards calculation wants to run {{ $value }} shards for queue {{ $labels.remote_name}}:{{ $labels.url }}, which is more than the max of {{ printf `prometheus_remote_storage_shards_max{instance=\"%s\",job=\"prometheus-k8s\",namespace=\"monitoring\"}` $labels.instance | query | first | value }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritedesiredshards\n        summary: Prometheus remote write desired shards calculation wants to run more than configured max shards.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_shards_desired{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        >\n          max_over_time(prometheus_remote_storage_shards_max{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusRuleFailures\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to evaluate {{ printf \"%.0f\" $value }} rules in the last 5m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusrulefailures\n        summary: Prometheus is failing rule evaluations.\n      expr: |\n        increase(prometheus_rule_evaluation_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusMissingRuleEvaluations\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has missed {{ printf \"%.0f\" $value }} rule group evaluations in the last 5m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusmissingruleevaluations\n        summary: Prometheus is missing rule evaluations due to slow rule group evaluation.\n      expr: |\n        increase(prometheus_rule_group_iterations_missed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusTargetLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped {{ printf \"%.0f\" $value }} targets because the number of targets exceeded the configured target_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetlimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded the targets limit.\n      expr: |\n        increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusLabelLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped {{ printf \"%.0f\" $value }} targets because some samples exceeded the configured label_limit, label_name_length_limit or label_value_length_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuslabellimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded the labels limit.\n      expr: |\n        increase(prometheus_target_scrape_pool_exceeded_label_limits_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusScrapeBodySizeLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{ printf \"%.0f\" $value }} scrapes in the last 5m because some targets exceeded the configured body_size_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapebodysizelimithit\n        summary: Prometheus has dropped some targets that exceeded body size limit.\n      expr: |\n        increase(prometheus_target_scrapes_exceeded_body_size_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusScrapeSampleLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{ printf \"%.0f\" $value }} scrapes in the last 5m because some targets exceeded the configured sample_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapesamplelimithit\n        summary: Prometheus has failed scrapes that have exceeded the configured sample limit.\n      expr: |\n        increase(prometheus_target_scrapes_exceeded_sample_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusTargetSyncFailure\n      annotations:\n        description: '{{ printf \"%.0f\" $value }} targets in Prometheus {{$labels.namespace}}/{{$labels.pod}} have failed to sync because invalid configuration was supplied.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetsyncfailure\n        summary: Prometheus has failed to sync targets.\n      expr: |\n        increase(prometheus_target_sync_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[30m]) > 0\n      for: 5m\n      labels:\n        severity: critical\n    - alert: PrometheusHighQueryLoad\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} query API has less than 20% available capacity in its query engine for the last 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheushighqueryload\n        summary: Prometheus is reaching its maximum capacity serving concurrent requests.\n      expr: |\n        avg_over_time(prometheus_engine_queries{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) / max_over_time(prometheus_engine_queries_concurrent_max{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0.8\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusErrorSendingAlertsToAnyAlertmanager\n      annotations:\n        description: '{{ printf \"%.1f\" $value }}% minimum errors while sending alerts from Prometheus {{$labels.namespace}}/{{$labels.pod}} to any Alertmanager.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstoanyalertmanager\n        summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager.\n      expr: |\n        min without (alertmanager) (\n          rate(prometheus_notifications_errors_total{job=\"prometheus-k8s\",namespace=\"monitoring\",alertmanager!~``}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"prometheus-k8s\",namespace=\"monitoring\",alertmanager!~``}[5m])\n        )\n        * 100\n        > 3\n      for: 15m\n      labels:\n        severity: critical\n"
  },
  {
    "path": "manifests/prometheus-roleBindingConfig.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s-config\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: prometheus-k8s-config\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheus-roleBindingSpecificNamespaces.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nitems:\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: RoleBinding\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 3.10.0\n    name: prometheus-k8s\n    namespace: default\n  roleRef:\n    apiGroup: rbac.authorization.k8s.io\n    kind: Role\n    name: prometheus-k8s\n  subjects:\n  - kind: ServiceAccount\n    name: prometheus-k8s\n    namespace: monitoring\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: RoleBinding\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 3.10.0\n    name: prometheus-k8s\n    namespace: kube-system\n  roleRef:\n    apiGroup: rbac.authorization.k8s.io\n    kind: Role\n    name: prometheus-k8s\n  subjects:\n  - kind: ServiceAccount\n    name: prometheus-k8s\n    namespace: monitoring\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: RoleBinding\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 3.10.0\n    name: prometheus-k8s\n    namespace: monitoring\n  roleRef:\n    apiGroup: rbac.authorization.k8s.io\n    kind: Role\n    name: prometheus-k8s\n  subjects:\n  - kind: ServiceAccount\n    name: prometheus-k8s\n    namespace: monitoring\nkind: RoleBindingList\n"
  },
  {
    "path": "manifests/prometheus-roleConfig.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s-config\n  namespace: monitoring\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - get\n"
  },
  {
    "path": "manifests/prometheus-roleSpecificNamespaces.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nitems:\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: Role\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 3.10.0\n    name: prometheus-k8s\n    namespace: default\n  rules:\n  - apiGroups:\n    - discovery.k8s.io\n    resources:\n    - endpointslices\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - \"\"\n    resources:\n    - services\n    - pods\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - extensions\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - networking.k8s.io\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: Role\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 3.10.0\n    name: prometheus-k8s\n    namespace: kube-system\n  rules:\n  - apiGroups:\n    - discovery.k8s.io\n    resources:\n    - endpointslices\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - \"\"\n    resources:\n    - services\n    - pods\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - extensions\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - networking.k8s.io\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: Role\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 3.10.0\n    name: prometheus-k8s\n    namespace: monitoring\n  rules:\n  - apiGroups:\n    - discovery.k8s.io\n    resources:\n    - endpointslices\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - \"\"\n    resources:\n    - services\n    - pods\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - extensions\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - networking.k8s.io\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\nkind: RoleList\n"
  },
  {
    "path": "manifests/prometheus-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  ports:\n  - name: web\n    port: 9090\n    targetPort: web\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n  selector:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n  sessionAffinity: ClientIP\n"
  },
  {
    "path": "manifests/prometheus-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheus-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 3.10.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 30s\n    port: web\n  - interval: 30s\n    port: reloader-web\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/prometheusAdapter-apiService.yaml",
    "content": "apiVersion: apiregistration.k8s.io/v1\nkind: APIService\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: v1beta1.metrics.k8s.io\nspec:\n  group: metrics.k8s.io\n  groupPriorityMinimum: 100\n  insecureSkipTLSVerify: true\n  service:\n    name: prometheus-adapter\n    namespace: monitoring\n  version: v1beta1\n  versionPriority: 100\n"
  },
  {
    "path": "manifests/prometheusAdapter-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  - namespaces\n  - pods\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n"
  },
  {
    "path": "manifests/prometheusAdapter-clusterRoleAggregatedMetricsReader.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n  name: system:aggregated-metrics-reader\nrules:\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - pods\n  - nodes\n  verbs:\n  - get\n  - list\n  - watch\n"
  },
  {
    "path": "manifests/prometheusAdapter-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-adapter\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheusAdapter-clusterRoleBindingDelegator.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: resource-metrics:system:auth-delegator\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: system:auth-delegator\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheusAdapter-clusterRoleServerResources.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: resource-metrics-server-resources\nrules:\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - '*'\n  verbs:\n  - '*'\n"
  },
  {
    "path": "manifests/prometheusAdapter-configMap.yaml",
    "content": "apiVersion: v1\ndata:\n  config.yaml: |-\n    \"resourceRules\":\n      \"cpu\":\n        \"containerLabel\": \"container\"\n        \"containerQuery\": |\n          sum by (<<.GroupBy>>) (\n            irate (\n                container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}[120s]\n            )\n          )\n        \"nodeQuery\": |\n          sum by (<<.GroupBy>>) (\n            1 - irate(\n              node_cpu_seconds_total{mode=\"idle\"}[60s]\n            )\n            * on(namespace, pod) group_left(node) (\n              node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}\n            )\n          )\n          or sum by (<<.GroupBy>>) (\n            1 - irate(\n              windows_cpu_time_total{mode=\"idle\", job=\"windows-exporter\",<<.LabelMatchers>>}[4m]\n            )\n          )\n        \"resources\":\n          \"overrides\":\n            \"namespace\":\n              \"resource\": \"namespace\"\n            \"node\":\n              \"resource\": \"node\"\n            \"pod\":\n              \"resource\": \"pod\"\n      \"memory\":\n        \"containerLabel\": \"container\"\n        \"containerQuery\": |\n          sum by (<<.GroupBy>>) (\n            container_memory_working_set_bytes{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}\n          )\n        \"nodeQuery\": |\n          sum by (<<.GroupBy>>) (\n            node_memory_MemTotal_bytes{job=\"node-exporter\",<<.LabelMatchers>>}\n            -\n            node_memory_MemAvailable_bytes{job=\"node-exporter\",<<.LabelMatchers>>}\n          )\n          or sum by (<<.GroupBy>>) (\n            windows_cs_physical_memory_bytes{job=\"windows-exporter\",<<.LabelMatchers>>}\n            -\n            windows_memory_available_bytes{job=\"windows-exporter\",<<.LabelMatchers>>}\n          )\n        \"resources\":\n          \"overrides\":\n            \"instance\":\n              \"resource\": \"node\"\n            \"namespace\":\n              \"resource\": \"namespace\"\n            \"pod\":\n              \"resource\": \"pod\"\n      \"window\": \"5m\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: adapter-config\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheusAdapter-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template:\n    metadata:\n      annotations:\n        checksum.config/md5: 3b1ebf7df0232d1675896f67b66373db\n      labels:\n        app.kubernetes.io/component: metrics-adapter\n        app.kubernetes.io/name: prometheus-adapter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.12.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --cert-dir=/var/run/serving-cert\n        - --config=/etc/adapter/config.yaml\n        - --metrics-relist-interval=1m\n        - --prometheus-url=http://prometheus-k8s.monitoring.svc:9090/\n        - --secure-port=6443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA\n        image: registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.12.0\n        livenessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /livez\n            port: https\n            scheme: HTTPS\n          periodSeconds: 5\n        name: prometheus-adapter\n        ports:\n        - containerPort: 6443\n          name: https\n        readinessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /readyz\n            port: https\n            scheme: HTTPS\n          periodSeconds: 5\n        resources:\n          limits:\n            cpu: 250m\n            memory: 180Mi\n          requests:\n            cpu: 102m\n            memory: 180Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        startupProbe:\n          failureThreshold: 18\n          httpGet:\n            path: /livez\n            port: https\n            scheme: HTTPS\n          periodSeconds: 10\n        volumeMounts:\n        - mountPath: /tmp\n          name: tmpfs\n          readOnly: false\n        - mountPath: /var/run/serving-cert\n          name: volume-serving-cert\n          readOnly: false\n        - mountPath: /etc/adapter\n          name: config\n          readOnly: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: prometheus-adapter\n      volumes:\n      - emptyDir: {}\n        name: tmpfs\n      - emptyDir: {}\n        name: volume-serving-cert\n      - configMap:\n          name: adapter-config\n        name: config\n"
  },
  {
    "path": "manifests/prometheusAdapter-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - {}\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/prometheusAdapter-podDisruptionBudget.yaml",
    "content": "apiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  minAvailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/prometheusAdapter-roleBindingAuthReader.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: resource-metrics-auth-reader\n  namespace: kube-system\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: extension-apiserver-authentication-reader\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheusAdapter-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  ports:\n  - name: https\n    port: 443\n    targetPort: 6443\n  selector:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/prometheusAdapter-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheusAdapter-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.12.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: (apiserver_client_certificate_.*|apiserver_envelope_.*|apiserver_flowcontrol_.*|apiserver_storage_.*|apiserver_webhooks_.*|workqueue_.*)\n      sourceLabels:\n      - __name__\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/prometheusOperator-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n  name: prometheus-operator\nrules:\n- apiGroups:\n  - monitoring.coreos.com\n  resources:\n  - alertmanagers\n  - alertmanagers/finalizers\n  - alertmanagers/status\n  - alertmanagerconfigs\n  - prometheuses\n  - prometheuses/finalizers\n  - prometheuses/status\n  - prometheusagents\n  - prometheusagents/finalizers\n  - prometheusagents/status\n  - thanosrulers\n  - thanosrulers/finalizers\n  - thanosrulers/status\n  - scrapeconfigs\n  - scrapeconfigs/status\n  - servicemonitors\n  - servicemonitors/status\n  - podmonitors\n  - podmonitors/status\n  - probes\n  - probes/status\n  - prometheusrules\n  - prometheusrules/status\n  verbs:\n  - '*'\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  verbs:\n  - list\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  - services/finalizers\n  verbs:\n  - get\n  - create\n  - update\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - events.k8s.io\n  resources:\n  - events\n  verbs:\n  - patch\n  - create\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - storage.k8s.io\n  resources:\n  - storageclasses\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - endpoints\n  verbs:\n  - get\n  - create\n  - update\n  - delete\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - get\n  - create\n  - list\n  - update\n  - delete\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n"
  },
  {
    "path": "manifests/prometheusOperator-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n  name: prometheus-operator\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-operator\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-operator\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheusOperator-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: prometheus-operator\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/name: prometheus-operator\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.89.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --kubelet-service=kube-system/kubelet\n        - --prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.89.0\n        - --watch-referenced-objects-in-all-namespaces=true\n        - --disable-unmanaged-prometheus-configuration=true\n        - --kubelet-endpoints=true\n        - --kubelet-endpointslice=true\n        env:\n        - name: GOGC\n          value: \"30\"\n        image: quay.io/prometheus-operator/prometheus-operator:v0.89.0\n        name: prometheus-operator\n        ports:\n        - containerPort: 8080\n          name: http\n        resources:\n          limits:\n            cpu: 200m\n            memory: 200Mi\n          requests:\n            cpu: 100m\n            memory: 100Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n      - args:\n        - --secure-listen-address=:8443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8080/\n        image: quay.io/brancz/kube-rbac-proxy:v0.21.0\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 8443\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n          seccompProfile:\n            type: RuntimeDefault\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsGroup: 65534\n        runAsNonRoot: true\n        runAsUser: 65534\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: prometheus-operator\n"
  },
  {
    "path": "manifests/prometheusOperator-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 8443\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "manifests/prometheusOperator-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n    prometheus: k8s\n    role: alert-rules\n  name: prometheus-operator-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: prometheus-operator\n    rules:\n    - alert: PrometheusOperatorListErrors\n      annotations:\n        description: Errors while performing List operations in controller {{$labels.controller}} in {{$labels.namespace}} namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorlisterrors\n        summary: Errors while performing list operations in controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[10m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[10m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorWatchErrors\n      annotations:\n        description: Errors while performing watch operations in controller {{$labels.controller}} in {{$labels.namespace}} namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorwatcherrors\n        summary: Errors while performing watch operations in controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorSyncFailed\n      annotations:\n        description: Controller {{ $labels.controller }} in {{ $labels.namespace }} namespace fails to reconcile {{ $value }} objects.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorsyncfailed\n        summary: Last controller reconciliation failed\n      expr: |\n        min_over_time(prometheus_operator_syncs{status=\"failed\",job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorReconcileErrors\n      annotations:\n        description: '{{ $value | humanizePercentage }} of reconciling operations failed for {{ $labels.controller }} controller in {{ $labels.namespace }} namespace.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorreconcileerrors\n        summary: Errors while reconciling objects.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) / (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorStatusUpdateErrors\n      annotations:\n        description: '{{ $value | humanizePercentage }} of status update operations failed for {{ $labels.controller }} controller in {{ $labels.namespace }} namespace.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorstatusupdateerrors\n        summary: Errors while updating objects status.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_status_update_errors_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) / (sum by (cluster,controller,namespace) (rate(prometheus_operator_status_update_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorNodeLookupErrors\n      annotations:\n        description: Errors while reconciling Prometheus in {{ $labels.namespace }} Namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornodelookuperrors\n        summary: Errors while reconciling Prometheus.\n      expr: |\n        rate(prometheus_operator_node_address_lookup_errors_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorNotReady\n      annotations:\n        description: Prometheus operator in {{ $labels.namespace }} namespace isn't ready to reconcile {{ $labels.controller }} resources.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornotready\n        summary: Prometheus operator not ready\n      expr: |\n        min by (cluster,controller,namespace) (max_over_time(prometheus_operator_ready{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) == 0)\n      for: 5m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorRejectedResources\n      annotations:\n        description: Prometheus operator in {{ $labels.namespace }} namespace rejected {{ printf \"%0.0f\" $value }} {{ $labels.controller }}/{{ $labels.resource }} resources.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorrejectedresources\n        summary: Resources rejected by Prometheus operator\n      expr: |\n        min_over_time(prometheus_operator_managed_resources{state=\"rejected\",job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0\n      for: 5m\n      labels:\n        severity: warning\n  - name: config-reloaders\n    rules:\n    - alert: ConfigReloaderSidecarErrors\n      annotations:\n        description: |-\n          Errors encountered while the {{$labels.pod}} config-reloader sidecar attempts to sync config in {{$labels.namespace}} namespace.\n          As a result, configuration for service running in {{$labels.pod}} may be stale and cannot be updated anymore.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/configreloadersidecarerrors\n        summary: config-reloader sidecar has not had a successful reload for 10m\n      expr: |\n        max_over_time(reloader_last_reload_successful{namespace=~\".+\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: warning\n"
  },
  {
    "path": "manifests/prometheusOperator-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https\n    port: 8443\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "manifests/prometheusOperator-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n  name: prometheus-operator\n  namespace: monitoring\n"
  },
  {
    "path": "manifests/prometheusOperator-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.89.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 0.89.0\n"
  },
  {
    "path": "manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: alertmanagerconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: AlertmanagerConfig\n    listKind: AlertmanagerConfigList\n    plural: alertmanagerconfigs\n    shortNames:\n    - amcfg\n    singular: alertmanagerconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          AlertmanagerConfig configures the Prometheus Alertmanager,\n          specifying how alerts should be grouped, inhibited and notified to external systems.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: spec defines the specification of AlertmanagerConfigSpec\n            properties:\n              inhibitRules:\n                description: |-\n                  inhibitRules defines the list of inhibition rules. The rules will only apply to alerts matching\n                  the resource's namespace.\n                items:\n                  description: |-\n                    InhibitRule defines an inhibition rule that allows to mute alerts when other\n                    alerts are already firing.\n                    See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\n                  properties:\n                    equal:\n                      description: |-\n                        equal defines labels that must have an equal value in the source and target alert\n                        for the inhibition to take effect. This ensures related alerts are properly grouped.\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    sourceMatch:\n                      description: |-\n                        sourceMatch defines matchers for which one or more alerts have to exist for the inhibition\n                        to take effect. The operator enforces that the alert matches the resource's namespace.\n                        These are the \"trigger\" alerts that cause other alerts to be inhibited.\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: |-\n                              matchType defines the match operation available with AlertManager >= v0.22.0.\n                              Takes precedence over Regex (deprecated) if non-empty.\n                              Valid values: \"=\" (equality), \"!=\" (inequality), \"=~\" (regex match), \"!~\" (regex non-match).\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: |-\n                              name defines the label to match.\n                              This specifies which alert label should be evaluated.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: |-\n                              regex defines whether to match on equality (false) or regular-expression (true).\n                              Deprecated: for AlertManager >= v0.22.0, `matchType` should be used instead.\n                            type: boolean\n                          value:\n                            description: |-\n                              value defines the label value to match.\n                              This is the expected value for the specified label.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    targetMatch:\n                      description: |-\n                        targetMatch defines matchers that have to be fulfilled in the alerts to be muted.\n                        The operator enforces that the alert matches the resource's namespace.\n                        When these conditions are met, matching alerts will be inhibited (silenced).\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: |-\n                              matchType defines the match operation available with AlertManager >= v0.22.0.\n                              Takes precedence over Regex (deprecated) if non-empty.\n                              Valid values: \"=\" (equality), \"!=\" (inequality), \"=~\" (regex match), \"!~\" (regex non-match).\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: |-\n                              name defines the label to match.\n                              This specifies which alert label should be evaluated.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: |-\n                              regex defines whether to match on equality (false) or regular-expression (true).\n                              Deprecated: for AlertManager >= v0.22.0, `matchType` should be used instead.\n                            type: boolean\n                          value:\n                            description: |-\n                              value defines the label value to match.\n                              This is the expected value for the specified label.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                  type: object\n                type: array\n                x-kubernetes-list-type: atomic\n              muteTimeIntervals:\n                description: muteTimeIntervals defines the list of MuteTimeInterval specifying when the routes should be muted.\n                items:\n                  description: MuteTimeInterval specifies the periods in time when notifications will be muted\n                  properties:\n                    name:\n                      description: name of the time interval\n                      type: string\n                    timeIntervals:\n                      description: timeIntervals defines a list of TimeInterval\n                      items:\n                        description: TimeInterval describes intervals of time\n                        properties:\n                          daysOfMonth:\n                            description: daysOfMonth defines a list of DayOfMonthRange\n                            items:\n                              description: DayOfMonthRange is an inclusive range of days of the month beginning at 1\n                              properties:\n                                end:\n                                  description: end of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                                start:\n                                  description: start of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          months:\n                            description: months defines a list of MonthRange\n                            items:\n                              description: |-\n                                MonthRange is an inclusive range of months of the year beginning in January\n                                Months can be specified by name (e.g 'January') by numerical month (e.g '1') or as an inclusive range (e.g 'January:March', '1:3', '1:March')\n                              pattern: ^((?i)january|february|march|april|may|june|july|august|september|october|november|december|1[0-2]|[1-9])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|1[0-2]|[1-9]))$)|$)\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          times:\n                            description: times defines a list of TimeRange\n                            items:\n                              description: TimeRange defines a start and end time in 24hr format\n                              properties:\n                                endTime:\n                                  description: endTime defines the end time in 24hr format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                                startTime:\n                                  description: startTime defines the start time in 24hr format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          weekdays:\n                            description: weekdays defines a list of WeekdayRange\n                            items:\n                              description: |-\n                                WeekdayRange is an inclusive range of days of the week beginning on Sunday\n                                Days can be specified by name (e.g 'Sunday') or as an inclusive range (e.g 'Monday:Friday')\n                              pattern: ^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$)\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          years:\n                            description: years defines a list of YearRange\n                            items:\n                              description: YearRange is an inclusive range of years\n                              pattern: ^2\\d{3}(?::2\\d{3}|$)\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-type: atomic\n              receivers:\n                description: receivers defines the list of receivers.\n                items:\n                  description: Receiver defines one or more notification integrations.\n                  properties:\n                    discordConfigs:\n                      description: discordConfigs defines the list of Slack configurations.\n                      items:\n                        description: |-\n                          DiscordConfig configures notifications via Discord.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#discord_config\n                        properties:\n                          apiURL:\n                            description: |-\n                              apiURL defines the secret's key that contains the Discord webhook URL.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          avatarURL:\n                            description: avatarURL defines the avatar url of the message sender.\n                            pattern: ^https?://.+$\n                            type: string\n                          content:\n                            description: content defines the template of the content's body.\n                            minLength: 1\n                            type: string\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: message defines the template of the message's body.\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          title:\n                            description: title defines the template of the message's title.\n                            type: string\n                          username:\n                            description: username defines the username of the message sender.\n                            minLength: 1\n                            type: string\n                        required:\n                        - apiURL\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    emailConfigs:\n                      description: emailConfigs defines the list of Email configurations.\n                      items:\n                        description: EmailConfig configures notifications via Email.\n                        properties:\n                          authIdentity:\n                            description: |-\n                              authIdentity defines the identity to use for SMTP authentication.\n                              This is typically used with PLAIN authentication mechanism.\n                            minLength: 1\n                            type: string\n                          authPassword:\n                            description: |-\n                              authPassword defines the secret's key that contains the password to use for authentication.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authSecret:\n                            description: |-\n                              authSecret defines the secret's key that contains the CRAM-MD5 secret.\n                              This is used for CRAM-MD5 authentication mechanism.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authUsername:\n                            description: |-\n                              authUsername defines the username to use for SMTP authentication.\n                              This is used for SMTP AUTH when the server requires authentication.\n                            minLength: 1\n                            type: string\n                          forceImplicitTLS:\n                            description: |-\n                              forceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security.\n                              true: force use of implicit TLS (direct TLS connection on any port)\n                              false: force disable implicit TLS (use explicit TLS/STARTTLS if required)\n                              nil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility\n                              It requires Alertmanager >= v0.31.0.\n                            type: boolean\n                          from:\n                            description: |-\n                              from defines the sender address for email notifications.\n                              This appears as the \"From\" field in the email header.\n                            minLength: 1\n                            type: string\n                          headers:\n                            description: |-\n                              headers defines additional email header key/value pairs.\n                              These override any headers previously set by the notification implementation.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: |-\n                                    key defines the key of the tuple.\n                                    This is the identifier or name part of the key-value pair.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: |-\n                                    value defines the value of the tuple.\n                                    This is the data or content associated with the key.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          hello:\n                            description: |-\n                              hello defines the hostname to identify to the SMTP server.\n                              This is used in the SMTP HELO/EHLO command during the connection handshake.\n                            minLength: 1\n                            type: string\n                          html:\n                            description: |-\n                              html defines the HTML body of the email notification.\n                              This allows for rich formatting in the email content.\n                            type: string\n                          requireTLS:\n                            description: |-\n                              requireTLS defines the SMTP TLS requirement.\n                              Note that Go does not support unencrypted connections to remote SMTP endpoints.\n                            type: boolean\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          smarthost:\n                            description: |-\n                              smarthost defines the SMTP host and port through which emails are sent.\n                              Format should be \"hostname:port\", e.g. \"smtp.example.com:587\".\n                            minLength: 1\n                            type: string\n                          text:\n                            description: |-\n                              text defines the plain text body of the email notification.\n                              This provides a fallback for email clients that don't support HTML.\n                            minLength: 1\n                            type: string\n                          tlsConfig:\n                            description: |-\n                              tlsConfig defines the TLS configuration for SMTP connections.\n                              This includes settings for certificates, CA validation, and TLS protocol options.\n                            properties:\n                              ca:\n                                description: ca defines the Certificate authority used when verifying server certificates.\n                                properties:\n                                  configMap:\n                                    description: configMap defines the ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: secret defines the Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: cert defines the Client certificate to present when doing client-authentication.\n                                properties:\n                                  configMap:\n                                    description: configMap defines the ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: secret defines the Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: insecureSkipVerify defines how to disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: keySecret defines the Secret containing the client key file for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              maxVersion:\n                                description: |-\n                                  maxVersion defines the maximum acceptable TLS version.\n\n                                  It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                enum:\n                                - TLS10\n                                - TLS11\n                                - TLS12\n                                - TLS13\n                                type: string\n                              minVersion:\n                                description: |-\n                                  minVersion defines the minimum acceptable TLS version.\n\n                                  It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                enum:\n                                - TLS10\n                                - TLS11\n                                - TLS12\n                                - TLS13\n                                type: string\n                              serverName:\n                                description: serverName is used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                          to:\n                            description: |-\n                              to defines the email address to send notifications to.\n                              This is the recipient address for alert notifications.\n                            minLength: 1\n                            type: string\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    msteamsConfigs:\n                      description: |-\n                        msteamsConfigs defines the list of MSTeams configurations.\n                        It requires Alertmanager >= 0.26.0.\n                      items:\n                        description: |-\n                          MSTeamsConfig configures notifications via Microsoft Teams.\n                          It requires Alertmanager >= 0.26.0.\n                        properties:\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for Teams webhook requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          summary:\n                            description: |-\n                              summary defines the message summary template for Teams notifications.\n                              This provides a brief overview that appears in Teams notification previews.\n                              It requires Alertmanager >= 0.27.0.\n                            type: string\n                          text:\n                            description: |-\n                              text defines the message body template for Teams notifications.\n                              This contains the detailed content of the Teams message.\n                            type: string\n                          title:\n                            description: |-\n                              title defines the message title template for Teams notifications.\n                              This appears as the main heading of the Teams message card.\n                            type: string\n                          webhookUrl:\n                            description: |-\n                              webhookUrl defines the MSTeams webhook URL for sending notifications.\n                              This is the incoming webhook URL configured in your Teams channel.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        required:\n                        - webhookUrl\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    msteamsv2Configs:\n                      description: |-\n                        msteamsv2Configs defines the list of MSTeamsV2 configurations.\n                        It requires Alertmanager >= 0.28.0.\n                      items:\n                        description: |-\n                          MSTeamsV2Config configures notifications via Microsoft Teams using the new message format with adaptive cards as required by flows.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#msteamsv2_config\n                          It requires Alertmanager >= 0.28.0.\n                        properties:\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for Teams webhook requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          text:\n                            description: |-\n                              text defines the message body template for adaptive card notifications.\n                              This contains the detailed content displayed in the Teams adaptive card format.\n                            minLength: 1\n                            type: string\n                          title:\n                            description: |-\n                              title defines the message title template for adaptive card notifications.\n                              This appears as the main heading in the Teams adaptive card.\n                            minLength: 1\n                            type: string\n                          webhookURL:\n                            description: |-\n                              webhookURL defines the MSTeams incoming webhook URL for adaptive card notifications.\n                              This webhook must support the newer adaptive cards format required by Teams flows.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    name:\n                      description: name defines the name of the receiver. Must be unique across all items from the list.\n                      minLength: 1\n                      type: string\n                    opsgenieConfigs:\n                      description: opsgenieConfigs defines the list of OpsGenie configurations.\n                      items:\n                        description: |-\n                          OpsGenieConfig configures notifications via OpsGenie.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\n                        properties:\n                          actions:\n                            description: |-\n                              actions defines a comma separated list of actions that will be available for the alert.\n                              These appear as action buttons in the OpsGenie interface.\n                            minLength: 1\n                            type: string\n                          apiKey:\n                            description: |-\n                              apiKey defines the secret's key that contains the OpsGenie API key.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          apiURL:\n                            description: |-\n                              apiURL defines the URL to send OpsGenie API requests to.\n                              When not specified, defaults to the standard OpsGenie API endpoint.\n                            pattern: ^https?://.+$\n                            type: string\n                          description:\n                            description: |-\n                              description defines the detailed description of the incident.\n                              This provides additional context beyond the message field.\n                            minLength: 1\n                            type: string\n                          details:\n                            description: |-\n                              details defines a set of arbitrary key/value pairs that provide further detail about the incident.\n                              These appear as additional fields in the OpsGenie alert.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: |-\n                                    key defines the key of the tuple.\n                                    This is the identifier or name part of the key-value pair.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: |-\n                                    value defines the value of the tuple.\n                                    This is the data or content associated with the key.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          entity:\n                            description: |-\n                              entity defines an optional field that can be used to specify which domain alert is related to.\n                              This helps group related alerts together in OpsGenie.\n                            minLength: 1\n                            type: string\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for OpsGenie API requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: |-\n                              message defines the alert text limited to 130 characters.\n                              This appears as the main alert title in OpsGenie.\n                            minLength: 1\n                            type: string\n                          note:\n                            description: |-\n                              note defines an additional alert note.\n                              This provides supplementary information about the alert.\n                            minLength: 1\n                            type: string\n                          priority:\n                            description: |-\n                              priority defines the priority level of alert.\n                              Possible values are P1, P2, P3, P4, and P5, where P1 is highest priority.\n                            minLength: 1\n                            type: string\n                          responders:\n                            description: |-\n                              responders defines the list of responders responsible for notifications.\n                              These determine who gets notified when the alert is created.\n                            items:\n                              description: |-\n                                OpsGenieConfigResponder defines a responder to an incident.\n                                One of `id`, `name` or `username` has to be defined.\n                              properties:\n                                id:\n                                  description: |-\n                                    id defines the unique identifier of the responder.\n                                    This corresponds to the responder's ID within OpsGenie.\n                                  minLength: 1\n                                  type: string\n                                name:\n                                  description: |-\n                                    name defines the display name of the responder.\n                                    This is used when the responder is identified by name rather than ID.\n                                  minLength: 1\n                                  type: string\n                                type:\n                                  description: |-\n                                    type defines the type of responder.\n                                    Valid values include \"user\", \"team\", \"schedule\", and \"escalation\".\n                                    This determines how OpsGenie interprets the other identifier fields.\n                                  enum:\n                                  - team\n                                  - teams\n                                  - user\n                                  - escalation\n                                  - schedule\n                                  minLength: 1\n                                  type: string\n                                username:\n                                  description: |-\n                                    username defines the username of the responder.\n                                    This is typically used for user-type responders when identifying by username.\n                                  minLength: 1\n                                  type: string\n                              required:\n                              - type\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          source:\n                            description: |-\n                              source defines the backlink to the sender of the notification.\n                              This helps identify where the alert originated from.\n                            minLength: 1\n                            type: string\n                          tags:\n                            description: |-\n                              tags defines a comma separated list of tags attached to the notifications.\n                              These help categorize and filter alerts within OpsGenie.\n                            minLength: 1\n                            type: string\n                          updateAlerts:\n                            description: |-\n                              updateAlerts defines Whether to update message and description of the alert in OpsGenie if it already exists\n                              By default, the alert is never updated in OpsGenie, the new message only appears in activity log.\n                            type: boolean\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    pagerdutyConfigs:\n                      description: pagerdutyConfigs defines the List of PagerDuty configurations.\n                      items:\n                        description: |-\n                          PagerDutyConfig configures notifications via PagerDuty.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\n                        properties:\n                          class:\n                            description: class defines the class/type of the event.\n                            minLength: 1\n                            type: string\n                          client:\n                            description: client defines the client identification.\n                            minLength: 1\n                            type: string\n                          clientURL:\n                            description: clientURL defines the backlink to the sender of notification.\n                            type: string\n                          component:\n                            description: component defines the part or component of the affected system that is broken.\n                            minLength: 1\n                            type: string\n                          description:\n                            description: description of the incident.\n                            minLength: 1\n                            type: string\n                          details:\n                            description: details defines the arbitrary key/value pairs that provide further detail about the incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: |-\n                                    key defines the key of the tuple.\n                                    This is the identifier or name part of the key-value pair.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: |-\n                                    value defines the value of the tuple.\n                                    This is the data or content associated with the key.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          group:\n                            description: group defines a cluster or grouping of sources.\n                            minLength: 1\n                            type: string\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          pagerDutyImageConfigs:\n                            description: pagerDutyImageConfigs defines a list of image details to attach that provide further detail about an incident.\n                            items:\n                              description: PagerDutyImageConfig attaches images to an incident\n                              properties:\n                                alt:\n                                  description: alt is the optional alternative text for the image.\n                                  minLength: 1\n                                  type: string\n                                href:\n                                  description: href defines the optional URL; makes the image a clickable link.\n                                  type: string\n                                src:\n                                  description: src of the image being attached to the incident\n                                  minLength: 1\n                                  type: string\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          pagerDutyLinkConfigs:\n                            description: pagerDutyLinkConfigs defines a list of link details to attach that provide further detail about an incident.\n                            items:\n                              description: PagerDutyLinkConfig attaches text links to an incident\n                              properties:\n                                alt:\n                                  description: alt defines the text that describes the purpose of the link, and can be used as the link's text.\n                                  minLength: 1\n                                  type: string\n                                href:\n                                  description: href defines the URL of the link to be attached\n                                  type: string\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          routingKey:\n                            description: |-\n                              routingKey defines the secret's key that contains the PagerDuty integration key (when using\n                              Events API v2). Either this field or `serviceKey` needs to be defined.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          serviceKey:\n                            description: |-\n                              serviceKey defines the secret's key that contains the PagerDuty service key (when using\n                              integration type \"Prometheus\"). Either this field or `routingKey` needs to\n                              be defined.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          severity:\n                            description: severity of the incident.\n                            minLength: 1\n                            type: string\n                          source:\n                            description: source defines the unique location of the affected system.\n                            minLength: 1\n                            type: string\n                          timeout:\n                            description: |-\n                              timeout is the maximum time allowed to invoke the pagerduty\n                              It requires Alertmanager >= v0.30.0.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          url:\n                            description: url defines the URL to send requests to.\n                            pattern: ^https?://.+$\n                            type: string\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    pushoverConfigs:\n                      description: pushoverConfigs defines the list of Pushover configurations.\n                      items:\n                        description: |-\n                          PushoverConfig configures notifications via Pushover.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\n                        properties:\n                          device:\n                            description: |-\n                              device defines the name of a specific device to send the notification to.\n                              If not specified, the notification is sent to all user's devices.\n                            minLength: 1\n                            type: string\n                          expire:\n                            description: |-\n                              expire defines how long your notification will continue to be retried for,\n                              unless the user acknowledges the notification. Only applies to priority 2 notifications.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          html:\n                            description: |-\n                              html defines whether notification message is HTML or plain text.\n                              When true, the message can include HTML formatting tags.\n                              html and monospace formatting are mutually exclusive.\n                            type: boolean\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for Pushover API requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: |-\n                              message defines the notification message content.\n                              This is the main body text of the Pushover notification.\n                            minLength: 1\n                            type: string\n                          monospace:\n                            description: |-\n                              monospace optional HTML/monospace formatting for the message, see https://pushover.net/api#html\n                              html and monospace formatting are mutually exclusive.\n                            type: boolean\n                          priority:\n                            description: |-\n                              priority defines the notification priority level.\n                              See https://pushover.net/api#priority for valid values and behavior.\n                            minLength: 1\n                            type: string\n                          retry:\n                            description: |-\n                              retry defines how often the Pushover servers will send the same notification to the user.\n                              Must be at least 30 seconds. Only applies to priority 2 notifications.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          sound:\n                            description: |-\n                              sound defines the name of one of the sounds supported by device clients.\n                              This overrides the user's default sound choice for this notification.\n                            minLength: 1\n                            type: string\n                          title:\n                            description: |-\n                              title defines the notification title displayed in the Pushover message.\n                              This appears as the bold header text in the notification.\n                            minLength: 1\n                            type: string\n                          token:\n                            description: |-\n                              token defines the secret's key that contains the registered application's API token.\n                              See https://pushover.net/apps for application registration.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                              Either `token` or `tokenFile` is required.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          tokenFile:\n                            description: |-\n                              tokenFile defines the token file that contains the registered application's API token.\n                              See https://pushover.net/apps for application registration.\n                              Either `token` or `tokenFile` is required.\n                              It requires Alertmanager >= v0.26.0.\n                            minLength: 1\n                            type: string\n                          ttl:\n                            description: |-\n                              ttl defines the time to live for the alert notification.\n                              This determines how long the notification remains active before expiring.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          url:\n                            description: |-\n                              url defines a supplementary URL shown alongside the message.\n                              This creates a clickable link within the Pushover notification.\n                            type: string\n                          urlTitle:\n                            description: |-\n                              urlTitle defines a title for the supplementary URL.\n                              If not specified, the raw URL is shown instead.\n                            minLength: 1\n                            type: string\n                          userKey:\n                            description: |-\n                              userKey defines the secret's key that contains the recipient user's user key.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                              Either `userKey` or `userKeyFile` is required.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          userKeyFile:\n                            description: |-\n                              userKeyFile defines the user key file that contains the recipient user's user key.\n                              Either `userKey` or `userKeyFile` is required.\n                              It requires Alertmanager >= v0.26.0.\n                            minLength: 1\n                            type: string\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    rocketchatConfigs:\n                      description: |-\n                        rocketchatConfigs defines the list of RocketChat configurations.\n                        It requires Alertmanager >= 0.28.0.\n                      items:\n                        description: |-\n                          RocketChatConfig configures notifications via RocketChat.\n                          It requires Alertmanager >= 0.28.0.\n                        properties:\n                          actions:\n                            description: |-\n                              actions defines interactive actions to include in the message.\n                              These appear as buttons that users can click to trigger responses.\n                            items:\n                              description: RocketChatActionConfig defines actions for RocketChat messages.\n                              properties:\n                                msg:\n                                  description: |-\n                                    msg defines the message to send when the button is clicked.\n                                    This allows the button to post a predefined message to the channel.\n                                  minLength: 1\n                                  type: string\n                                text:\n                                  description: |-\n                                    text defines the button text displayed to users.\n                                    This is the label that appears on the interactive button.\n                                  minLength: 1\n                                  type: string\n                                url:\n                                  description: |-\n                                    url defines the URL the button links to when clicked.\n                                    This creates a clickable button that opens the specified URL.\n                                  type: string\n                              type: object\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          apiURL:\n                            description: |-\n                              apiURL defines the API URL for RocketChat.\n                              Defaults to https://open.rocket.chat/ if not specified.\n                            pattern: ^https?://.+$\n                            type: string\n                          channel:\n                            description: |-\n                              channel defines the channel to send alerts to.\n                              This can be a channel name (e.g., \"#alerts\") or a direct message recipient.\n                            minLength: 1\n                            type: string\n                          color:\n                            description: |-\n                              color defines the message color displayed in RocketChat.\n                              This appears as a colored bar alongside the message.\n                            minLength: 1\n                            type: string\n                          emoji:\n                            description: |-\n                              emoji defines the emoji to be displayed as an avatar.\n                              If provided, this emoji will be used instead of the default avatar or iconURL.\n                            minLength: 1\n                            type: string\n                          fields:\n                            description: |-\n                              fields defines additional fields for the message attachment.\n                              These appear as structured key-value pairs within the message.\n                            items:\n                              description: RocketChatFieldConfig defines additional fields for RocketChat messages.\n                              properties:\n                                short:\n                                  description: |-\n                                    short defines whether this field should be a short field.\n                                    When true, the field may be displayed inline with other short fields to save space.\n                                  type: boolean\n                                title:\n                                  description: |-\n                                    title defines the title of this field.\n                                    This appears as bold text labeling the field content.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: |-\n                                    value defines the value of this field, displayed underneath the title.\n                                    This contains the actual data or content for the field.\n                                  minLength: 1\n                                  type: string\n                              type: object\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for RocketChat API requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          iconURL:\n                            description: |-\n                              iconURL defines the icon URL for the message avatar.\n                              This displays a custom image as the message sender's avatar.\n                            type: string\n                          imageURL:\n                            description: |-\n                              imageURL defines the image URL to display within the message.\n                              This embeds an image directly in the message attachment.\n                            type: string\n                          linkNames:\n                            description: |-\n                              linkNames defines whether to enable automatic linking of usernames and channels.\n                              When true, @username and #channel references become clickable links.\n                            type: boolean\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          shortFields:\n                            description: |-\n                              shortFields defines whether to use short fields in the message layout.\n                              When true, fields may be displayed side by side to save space.\n                            type: boolean\n                          text:\n                            description: |-\n                              text defines the message text to send.\n                              This is optional because attachments can be used instead of or alongside text.\n                            minLength: 1\n                            type: string\n                          thumbURL:\n                            description: |-\n                              thumbURL defines the thumbnail URL for the message.\n                              This displays a small thumbnail image alongside the message content.\n                            type: string\n                          title:\n                            description: |-\n                              title defines the message title displayed prominently in the message.\n                              This appears as bold text at the top of the message attachment.\n                            minLength: 1\n                            type: string\n                          titleLink:\n                            description: |-\n                              titleLink defines the URL that the title will link to when clicked.\n                              This makes the message title clickable in the RocketChat interface.\n                            minLength: 1\n                            type: string\n                          token:\n                            description: |-\n                              token defines the sender token for RocketChat authentication.\n                              This is the personal access token or bot token used to authenticate API requests.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          tokenID:\n                            description: |-\n                              tokenID defines the sender token ID for RocketChat authentication.\n                              This is the user ID associated with the token used for API requests.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        required:\n                        - token\n                        - tokenID\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    slackConfigs:\n                      description: slackConfigs defines the list of Slack configurations.\n                      items:\n                        description: |-\n                          SlackConfig configures notifications via Slack.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#slack_config\n                        properties:\n                          actions:\n                            description: actions defines a list of Slack actions that are sent with each notification.\n                            items:\n                              description: |-\n                                SlackAction configures a single Slack action that is sent with each\n                                notification.\n                                See https://api.slack.com/docs/message-attachments#action_fields and\n                                https://api.slack.com/docs/message-buttons for more information.\n                              properties:\n                                confirm:\n                                  description: |-\n                                    confirm defines an optional confirmation dialog that appears before the action is executed.\n                                    When set, users must confirm their intent before the action proceeds.\n                                  properties:\n                                    dismissText:\n                                      description: |-\n                                        dismissText defines the label for the cancel button in the dialog.\n                                        When not specified, defaults to \"Cancel\". This button cancels the action.\n                                      minLength: 1\n                                      type: string\n                                    okText:\n                                      description: |-\n                                        okText defines the label for the confirmation button in the dialog.\n                                        When not specified, defaults to \"Okay\". This button proceeds with the action.\n                                      minLength: 1\n                                      type: string\n                                    text:\n                                      description: |-\n                                        text defines the main message displayed in the confirmation dialog.\n                                        This should be a clear question or statement asking the user to confirm their action.\n                                      minLength: 1\n                                      type: string\n                                    title:\n                                      description: |-\n                                        title defines the title text displayed at the top of the confirmation dialog.\n                                        When not specified, a default title will be used.\n                                      minLength: 1\n                                      type: string\n                                  required:\n                                  - text\n                                  type: object\n                                name:\n                                  description: |-\n                                    name defines a unique identifier for the action within the message.\n                                    This value is sent back to your application when the action is triggered.\n                                  minLength: 1\n                                  type: string\n                                style:\n                                  description: |-\n                                    style defines the visual appearance of the action element.\n                                    Valid values include \"default\", \"primary\" (green), and \"danger\" (red).\n                                  minLength: 1\n                                  type: string\n                                text:\n                                  description: |-\n                                    text defines the user-visible label displayed on the action element.\n                                    For buttons, this is the button text. For select menus, this is the placeholder text.\n                                  minLength: 1\n                                  type: string\n                                type:\n                                  description: |-\n                                    type defines the type of interactive component.\n                                    Common values include \"button\" for clickable buttons and \"select\" for dropdown menus.\n                                  minLength: 1\n                                  type: string\n                                url:\n                                  description: |-\n                                    url defines the URL to open when the action is triggered.\n                                    Only applicable for button-type actions. When set, clicking the button opens this URL.\n                                  type: string\n                                value:\n                                  description: |-\n                                    value defines the payload sent when the action is triggered.\n                                    This data is included in the callback sent to your application.\n                                  minLength: 1\n                                  type: string\n                              required:\n                              - text\n                              - type\n                              type: object\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          apiURL:\n                            description: |-\n                              apiURL defines the secret's key that contains the Slack webhook URL.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          callbackId:\n                            description: callbackId defines an identifier for the message used in interactive components.\n                            minLength: 1\n                            type: string\n                          channel:\n                            description: channel defines the channel or user to send notifications to.\n                            minLength: 1\n                            type: string\n                          color:\n                            description: |-\n                              color defines the color of the left border of the Slack message attachment.\n                              Can be a hex color code (e.g., \"#ff0000\") or a predefined color name.\n                            minLength: 1\n                            type: string\n                          fallback:\n                            description: fallback defines a plain-text summary of the attachment for clients that don't support attachments.\n                            minLength: 1\n                            type: string\n                          fields:\n                            description: fields defines a list of Slack fields that are sent with each notification.\n                            items:\n                              description: |-\n                                SlackField configures a single Slack field that is sent with each notification.\n                                Each field must contain a title, value, and optionally, a boolean value to indicate if the field\n                                is short enough to be displayed next to other fields designated as short.\n                                See https://api.slack.com/docs/message-attachments#fields for more information.\n                              properties:\n                                short:\n                                  description: |-\n                                    short determines whether this field can be displayed alongside other short fields.\n                                    When true, Slack may display this field side by side with other short fields.\n                                    When false or not specified, the field takes the full width of the message.\n                                  type: boolean\n                                title:\n                                  description: |-\n                                    title defines the label or header text displayed for this field.\n                                    This appears as bold text above the field value in the Slack message.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: |-\n                                    value defines the content or data displayed for this field.\n                                    This appears below the title and can contain plain text or Slack markdown.\n                                  minLength: 1\n                                  type: string\n                              required:\n                              - title\n                              - value\n                              type: object\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          footer:\n                            description: footer defines small text displayed at the bottom of the message attachment.\n                            minLength: 1\n                            type: string\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          iconEmoji:\n                            description: iconEmoji defines the emoji to use as the bot's avatar (e.g., \":ghost:\").\n                            minLength: 1\n                            type: string\n                          iconURL:\n                            description: iconURL defines the URL to an image to use as the bot's avatar.\n                            type: string\n                          imageURL:\n                            description: imageURL defines the URL to an image file that will be displayed inside the message attachment.\n                            type: string\n                          linkNames:\n                            description: |-\n                              linkNames enables automatic linking of channel names and usernames in the message.\n                              When true, @channel and @username will be converted to clickable links.\n                            type: boolean\n                          messageText:\n                            description: |-\n                              messageText defines text content of the Slack message.\n                              If set, this is sent as the top-level 'text' field in the Slack payload.\n                              It requires Alertmanager >= v0.31.0.\n                            minLength: 1\n                            type: string\n                          mrkdwnIn:\n                            description: |-\n                              mrkdwnIn defines which fields should be parsed as Slack markdown.\n                              Valid values include \"pretext\", \"text\", and \"fields\".\n                            items:\n                              minLength: 1\n                              type: string\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          pretext:\n                            description: pretext defines optional text that appears above the message attachment block.\n                            minLength: 1\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          shortFields:\n                            description: |-\n                              shortFields determines whether fields are displayed in a compact format.\n                              When true, fields are shown side by side when possible.\n                            type: boolean\n                          text:\n                            description: text defines the main text content of the Slack message attachment.\n                            minLength: 1\n                            type: string\n                          thumbURL:\n                            description: |-\n                              thumbURL defines the URL to an image file that will be displayed as a thumbnail\n                              on the right side of the message attachment.\n                            type: string\n                          timeout:\n                            description: |-\n                              timeout defines the maximum time to wait for a webhook request to complete,\n                              before failing the request and allowing it to be retried.\n                              It requires Alertmanager >= v0.30.0.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          title:\n                            description: title defines the title text displayed in the Slack message attachment.\n                            minLength: 1\n                            type: string\n                          titleLink:\n                            description: titleLink defines the URL that the title will link to when clicked.\n                            type: string\n                          username:\n                            description: username defines the slack bot user name.\n                            minLength: 1\n                            type: string\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    snsConfigs:\n                      description: snsConfigs defines the list of SNS configurations\n                      items:\n                        description: |-\n                          SNSConfig configures notifications via AWS SNS.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\n                        properties:\n                          apiURL:\n                            description: |-\n                              apiURL defines the SNS API URL, e.g. https://sns.us-east-2.amazonaws.com.\n                              If not specified, the SNS API URL from the SNS SDK will be used.\n                            type: string\n                          attributes:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              attributes defines SNS message attributes as key-value pairs.\n                              These provide additional metadata that can be used for message filtering and routing.\n                            type: object\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for SNS API requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: |-\n                              message defines the message content of the SNS notification.\n                              This is the actual notification text that will be sent to subscribers.\n                            minLength: 1\n                            type: string\n                          phoneNumber:\n                            description: |-\n                              phoneNumber defines the phone number if message is delivered via SMS in E.164 format.\n                              If you don't specify this value, you must specify a value for the TopicARN or TargetARN.\n                            minLength: 1\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          sigv4:\n                            description: |-\n                              sigv4 configures AWS's Signature Verification 4 signing process to sign requests.\n                              This includes AWS credentials and region configuration for authentication.\n                            properties:\n                              accessKey:\n                                description: |-\n                                  accessKey defines the AWS API key. If not specified, the environment variable\n                                  `AWS_ACCESS_KEY_ID` is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              profile:\n                                description: profile defines the named AWS profile used to authenticate.\n                                type: string\n                              region:\n                                description: region defines the AWS region. If blank, the region from the default credentials chain used.\n                                type: string\n                              roleArn:\n                                description: roleArn defines the named AWS profile used to authenticate.\n                                type: string\n                              secretKey:\n                                description: |-\n                                  secretKey defines the AWS API secret. If not specified, the environment\n                                  variable `AWS_SECRET_ACCESS_KEY` is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              useFIPSSTSEndpoint:\n                                description: |-\n                                  useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint.\n                                  It requires Prometheus >= v2.54.0.\n                                type: boolean\n                            type: object\n                          subject:\n                            description: |-\n                              subject defines the subject line when the message is delivered to email endpoints.\n                              This field is only used when sending to email subscribers of an SNS topic.\n                            minLength: 1\n                            type: string\n                          targetARN:\n                            description: |-\n                              targetARN defines the mobile platform endpoint ARN if message is delivered via mobile notifications.\n                              If you don't specify this value, you must specify a value for the TopicARN or PhoneNumber.\n                            minLength: 1\n                            type: string\n                          topicARN:\n                            description: |-\n                              topicARN defines the SNS topic ARN, e.g. arn:aws:sns:us-east-2:698519295917:My-Topic.\n                              If you don't specify this value, you must specify a value for the PhoneNumber or TargetARN.\n                            minLength: 1\n                            type: string\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    telegramConfigs:\n                      description: telegramConfigs defines the list of Telegram configurations.\n                      items:\n                        description: |-\n                          TelegramConfig configures notifications via Telegram.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\n                        properties:\n                          apiURL:\n                            description: |-\n                              apiURL defines the Telegram API URL, e.g. https://api.telegram.org.\n                              If not specified, the default Telegram API URL will be used.\n                            pattern: ^https?://.+$\n                            type: string\n                          botToken:\n                            description: |-\n                              botToken defines the Telegram bot token. It is mutually exclusive with `botTokenFile`.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                              Either `botToken` or `botTokenFile` is required.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          botTokenFile:\n                            description: |-\n                              botTokenFile defines the file to read the Telegram bot token from.\n                              It is mutually exclusive with `botToken`.\n                              Either `botToken` or `botTokenFile` is required.\n                              It requires Alertmanager >= v0.26.0.\n                            type: string\n                          chatID:\n                            description: |-\n                              chatID defines the Telegram chat ID where messages will be sent.\n                              This can be a user ID, group ID, or channel ID (with @ prefix for public channels).\n                            format: int64\n                            type: integer\n                          disableNotifications:\n                            description: |-\n                              disableNotifications controls whether Telegram notifications are sent silently.\n                              When true, users will receive the message without notification sounds.\n                            type: boolean\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for Telegram API requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: |-\n                              message defines the message template for the Telegram notification.\n                              This is the content that will be sent to the specified chat.\n                            type: string\n                          messageThreadID:\n                            description: |-\n                              messageThreadID defines the Telegram Group Topic ID for threaded messages.\n                              This allows sending messages to specific topics within Telegram groups.\n                              It requires Alertmanager >= 0.26.0.\n                            format: int64\n                            type: integer\n                          parseMode:\n                            description: |-\n                              parseMode defines the parse mode for telegram message formatting.\n                              Valid values are \"MarkdownV2\", \"Markdown\", and \"HTML\".\n                              This determines how text formatting is interpreted in the message.\n                            enum:\n                            - MarkdownV2\n                            - Markdown\n                            - HTML\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                        required:\n                        - chatID\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    victoropsConfigs:\n                      description: victoropsConfigs defines the list of VictorOps configurations.\n                      items:\n                        description: |-\n                          VictorOpsConfig configures notifications via VictorOps.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\n                        properties:\n                          apiKey:\n                            description: |-\n                              apiKey defines the secret's key that contains the API key to use when talking to the VictorOps API.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          apiUrl:\n                            description: |-\n                              apiUrl defines the VictorOps API URL.\n                              When not specified, defaults to the standard VictorOps API endpoint.\n                            pattern: ^https?://.+$\n                            type: string\n                          customFields:\n                            description: |-\n                              customFields defines additional custom fields for notification.\n                              These provide extra metadata that will be included with the VictorOps incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: |-\n                                    key defines the key of the tuple.\n                                    This is the identifier or name part of the key-value pair.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: |-\n                                    value defines the value of the tuple.\n                                    This is the data or content associated with the key.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          entityDisplayName:\n                            description: |-\n                              entityDisplayName contains a summary of the alerted problem.\n                              This appears as the main title or identifier for the incident.\n                            minLength: 1\n                            type: string\n                          httpConfig:\n                            description: httpConfig defines the HTTP client's configuration for VictorOps API requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          messageType:\n                            description: |-\n                              messageType describes the behavior of the alert.\n                              Valid values are \"CRITICAL\", \"WARNING\", and \"INFO\".\n                            minLength: 1\n                            type: string\n                          monitoringTool:\n                            description: |-\n                              monitoringTool defines the monitoring tool the state message is from.\n                              This helps identify the source system that generated the alert.\n                            minLength: 1\n                            type: string\n                          routingKey:\n                            description: |-\n                              routingKey defines a key used to map the alert to a team.\n                              This determines which VictorOps team will receive the alert notification.\n                            minLength: 1\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          stateMessage:\n                            description: |-\n                              stateMessage contains a long explanation of the alerted problem.\n                              This provides detailed context about the incident.\n                            minLength: 1\n                            type: string\n                        required:\n                        - routingKey\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    webexConfigs:\n                      description: webexConfigs defines the list of Webex configurations.\n                      items:\n                        description: |-\n                          WebexConfig configures notification via Cisco Webex\n                          See https://prometheus.io/docs/alerting/latest/configuration/#webex_config\n                        properties:\n                          apiURL:\n                            description: apiURL defines the Webex Teams API URL i.e. https://webexapis.com/v1/messages\n                            pattern: ^https?://.+$\n                            type: string\n                          httpConfig:\n                            description: httpConfig defines the HTTP client's configuration.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: message defines the message template\n                            type: string\n                          roomID:\n                            description: roomID defines the ID of the Webex Teams room where to send the messages.\n                            minLength: 1\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                        required:\n                        - roomID\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    webhookConfigs:\n                      description: webhookConfigs defines the List of webhook configurations.\n                      items:\n                        description: |-\n                          WebhookConfig configures notifications via a generic receiver supporting the webhook payload.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\n                        properties:\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for webhook requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          maxAlerts:\n                            description: |-\n                              maxAlerts defines the maximum number of alerts to be sent per webhook message.\n                              When 0, all alerts are included in the webhook payload.\n                            format: int32\n                            minimum: 0\n                            type: integer\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          timeout:\n                            description: |-\n                              timeout defines the maximum time to wait for a webhook request to complete,\n                              before failing the request and allowing it to be retried.\n                              It requires Alertmanager >= v0.28.0.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          url:\n                            description: |-\n                              url defines the URL to send HTTP POST requests to.\n                              urlSecret takes precedence over url. One of urlSecret and url should be defined.\n                            type: string\n                          urlSecret:\n                            description: |-\n                              urlSecret defines the secret's key that contains the webhook URL to send HTTP requests to.\n                              urlSecret takes precedence over url. One of urlSecret and url should be defined.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    wechatConfigs:\n                      description: wechatConfigs defines the list of WeChat configurations.\n                      items:\n                        description: |-\n                          WeChatConfig configures notifications via WeChat.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\n                        properties:\n                          agentID:\n                            description: |-\n                              agentID defines the application agent ID within WeChat Work.\n                              This identifies which WeChat Work application will send the notifications.\n                            minLength: 1\n                            type: string\n                          apiSecret:\n                            description: |-\n                              apiSecret defines the secret's key that contains the WeChat API key.\n                              The secret needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          apiURL:\n                            description: |-\n                              apiURL defines the WeChat API URL.\n                              When not specified, defaults to the standard WeChat Work API endpoint.\n                            pattern: ^https?://.+$\n                            type: string\n                          corpID:\n                            description: |-\n                              corpID defines the corp id for authentication.\n                              This is the unique identifier for your WeChat Work organization.\n                            minLength: 1\n                            type: string\n                          httpConfig:\n                            description: httpConfig defines the HTTP client configuration for WeChat API requests.\n                            properties:\n                              authorization:\n                                description: |-\n                                  authorization defines the authorization header configuration for the client.\n                                  This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: |-\n                                      type defines the authentication type. The value is case-insensitive.\n\n                                      \"Basic\" is not a supported value.\n\n                                      Default: \"Bearer\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: |-\n                                  basicAuth defines the basic authentication credentials for the client.\n                                  This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: |-\n                                      password defines a key of a Secret containing the password for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: |-\n                                      username defines a key of a Secret containing the username for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: |-\n                                  bearerTokenSecret defines the secret's key that contains the bearer token to be used by the client\n                                  for authentication.\n                                  The secret needs to be in the same namespace as the AlertmanagerConfig\n                                  object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              enableHttp2:\n                                description: enableHttp2 can be used to disable HTTP2.\n                                type: boolean\n                              followRedirects:\n                                description: |-\n                                  followRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                  When true, the client will automatically follow redirect responses.\n                                type: boolean\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              oauth2:\n                                description: |-\n                                  oauth2 defines the OAuth2 client credentials used to fetch a token for the targets.\n                                  This enables OAuth2 authentication flow for HTTP requests.\n                                properties:\n                                  clientId:\n                                    description: |-\n                                      clientId defines a key of a Secret or ConfigMap containing the\n                                      OAuth2 client's ID.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: |-\n                                      clientSecret defines a key of a Secret containing the OAuth2\n                                      client's secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      endpointParams configures the HTTP parameters to append to the token\n                                      URL.\n                                    type: object\n                                  noProxy:\n                                    description: |-\n                                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                      that should be excluded from proxying. IP and domain names can\n                                      contain port numbers.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: string\n                                  proxyConnectHeader:\n                                    additionalProperties:\n                                      items:\n                                        description: SecretKeySelector selects a key of a Secret.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      type: array\n                                    description: |-\n                                      proxyConnectHeader optionally specifies headers to send to\n                                      proxies during CONNECT requests.\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  proxyFromEnvironment:\n                                    description: |-\n                                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                    type: boolean\n                                  proxyUrl:\n                                    description: proxyUrl defines the HTTP proxy server to use.\n                                    pattern: ^(http|https|socks5)://.+$\n                                    type: string\n                                  scopes:\n                                    description: scopes defines the OAuth2 scopes used for the token request.\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlsConfig:\n                                    description: |-\n                                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                      It requires Prometheus >= v2.43.0.\n                                    properties:\n                                      ca:\n                                        description: ca defines the Certificate authority used when verifying server certificates.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      cert:\n                                        description: cert defines the Client certificate to present when doing client-authentication.\n                                        properties:\n                                          configMap:\n                                            description: configMap defines the ConfigMap containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key to select.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the ConfigMap or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          secret:\n                                            description: secret defines the Secret containing data to use for the targets.\n                                            properties:\n                                              key:\n                                                description: The key of the secret to select from.  Must be a valid secret key.\n                                                type: string\n                                              name:\n                                                default: \"\"\n                                                description: |-\n                                                  Name of the referent.\n                                                  This field is effectively required, but due to backwards compatibility is\n                                                  allowed to be empty. Instances of this type with an empty value here are\n                                                  almost certainly wrong.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                type: string\n                                              optional:\n                                                description: Specify whether the Secret or its key must be defined\n                                                type: boolean\n                                            required:\n                                            - key\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      insecureSkipVerify:\n                                        description: insecureSkipVerify defines how to disable target certificate validation.\n                                        type: boolean\n                                      keySecret:\n                                        description: keySecret defines the Secret containing the client key file for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      maxVersion:\n                                        description: |-\n                                          maxVersion defines the maximum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      minVersion:\n                                        description: |-\n                                          minVersion defines the minimum acceptable TLS version.\n\n                                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                        enum:\n                                        - TLS10\n                                        - TLS11\n                                        - TLS12\n                                        - TLS13\n                                        type: string\n                                      serverName:\n                                        description: serverName is used to verify the hostname for the targets.\n                                        type: string\n                                    type: object\n                                  tokenUrl:\n                                    description: tokenUrl defines the URL to fetch the token from.\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyURL:\n                                description: |-\n                                  proxyURL defines an optional proxy URL for HTTP requests.\n                                  If defined, this field takes precedence over `proxyUrl`.\n                                type: string\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration for the client.\n                                  This includes settings for certificates, CA validation, and TLS protocol options.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: |-\n                              message defines the API request data as defined by the WeChat API.\n                              This contains the actual notification content to be sent.\n                            minLength: 1\n                            type: string\n                          messageType:\n                            description: |-\n                              messageType defines the type of message to send.\n                              Valid values include \"text\", \"markdown\", and other WeChat Work supported message types.\n                            minLength: 1\n                            type: string\n                          sendResolved:\n                            description: sendResolved defines whether or not to notify about resolved alerts.\n                            type: boolean\n                          toParty:\n                            description: |-\n                              toParty defines the target department(s) to receive the notification.\n                              Can be a single department ID or multiple department IDs separated by '|'.\n                            minLength: 1\n                            type: string\n                          toTag:\n                            description: |-\n                              toTag defines the target tag(s) to receive the notification.\n                              Can be a single tag ID or multiple tag IDs separated by '|'.\n                            minLength: 1\n                            type: string\n                          toUser:\n                            description: |-\n                              toUser defines the target user(s) to receive the notification.\n                              Can be a single user ID or multiple user IDs separated by '|'.\n                            minLength: 1\n                            type: string\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n              route:\n                description: |-\n                  route defines the Alertmanager route definition for alerts matching the resource's\n                  namespace. If present, it will be added to the generated Alertmanager\n                  configuration as a first-level route.\n                properties:\n                  activeTimeIntervals:\n                    description: activeTimeIntervals is a list of MuteTimeInterval names when this route should be active.\n                    items:\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                  continue:\n                    description: |-\n                      continue defines the boolean indicating whether an alert should continue matching subsequent\n                      sibling nodes. It will always be overridden to true for the first-level\n                      route by the Prometheus operator.\n                    type: boolean\n                  groupBy:\n                    description: |-\n                      groupBy defines the list of labels to group by.\n                      Labels must not be repeated (unique list).\n                      Special label \"...\" (aggregate by all possible labels), if provided, must be the only element in the list.\n                    items:\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                  groupInterval:\n                    description: |-\n                      groupInterval defines how long to wait before sending an updated notification.\n                      Must be greater than 0.\n                      Example: \"5m\"\n                    minLength: 1\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  groupWait:\n                    description: |-\n                      groupWait defines how long to wait before sending the initial notification.\n                      Example: \"30s\"\n                    minLength: 1\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  matchers:\n                    description: |-\n                      matchers defines the list of matchers that the alert's labels should match. For the first\n                      level route, the operator removes any existing equality and regexp\n                      matcher on the `namespace` label and adds a `namespace: <object\n                      namespace>` matcher.\n                    items:\n                      description: Matcher defines how to match on alert's labels.\n                      properties:\n                        matchType:\n                          description: |-\n                            matchType defines the match operation available with AlertManager >= v0.22.0.\n                            Takes precedence over Regex (deprecated) if non-empty.\n                            Valid values: \"=\" (equality), \"!=\" (inequality), \"=~\" (regex match), \"!~\" (regex non-match).\n                          enum:\n                          - '!='\n                          - =\n                          - =~\n                          - '!~'\n                          type: string\n                        name:\n                          description: |-\n                            name defines the label to match.\n                            This specifies which alert label should be evaluated.\n                          minLength: 1\n                          type: string\n                        regex:\n                          description: |-\n                            regex defines whether to match on equality (false) or regular-expression (true).\n                            Deprecated: for AlertManager >= v0.22.0, `matchType` should be used instead.\n                          type: boolean\n                        value:\n                          description: |-\n                            value defines the label value to match.\n                            This is the expected value for the specified label.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  muteTimeIntervals:\n                    description: muteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,\n                    items:\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                  receiver:\n                    description: |-\n                      receiver defines the name of the receiver for this route. If not empty, it should be listed in\n                      the `receivers` field.\n                    type: string\n                  repeatInterval:\n                    description: |-\n                      repeatInterval defines how long to wait before repeating the last notification.\n                      Must be greater than 0.\n                      Example: \"4h\"\n                    minLength: 1\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  routes:\n                    description: routes defines the child routes.\n                    items:\n                      x-kubernetes-preserve-unknown-fields: true\n                    type: array\n                    x-kubernetes-list-type: atomic\n                type: object\n            type: object\n          status:\n            description: |-\n              status defines the status subresource. It is under active development and is updated only when the\n              \"StatusForConfigurationResources\" feature gate is enabled.\n\n              Most recent observed status of the ServiceMonitor. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              bindings:\n                description: bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\n                items:\n                  description: WorkloadBinding is a link between a configuration resource and a workload resource.\n                  properties:\n                    conditions:\n                      description: conditions defines the current state of the configuration resource when bound to the referenced Workload object.\n                      items:\n                        description: ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\n                        properties:\n                          lastTransitionTime:\n                            description: lastTransitionTime defines the time of the last update to the current status property.\n                            format: date-time\n                            type: string\n                          message:\n                            description: message defines the human-readable message indicating details for the condition's last transition.\n                            type: string\n                          observedGeneration:\n                            description: |-\n                              observedGeneration defines the .metadata.generation that the\n                              condition was set based upon. For instance, if `.metadata.generation` is\n                              currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                              condition is out of date with respect to the current state of the object.\n                            format: int64\n                            type: integer\n                          reason:\n                            description: reason for the condition's last transition.\n                            type: string\n                          status:\n                            description: status of the condition.\n                            minLength: 1\n                            type: string\n                          type:\n                            description: |-\n                              type of the condition being reported.\n                              Currently, only \"Accepted\" is supported.\n                            enum:\n                            - Accepted\n                            minLength: 1\n                            type: string\n                        required:\n                        - lastTransitionTime\n                        - status\n                        - type\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - type\n                      x-kubernetes-list-type: map\n                    group:\n                      description: group defines the group of the referenced resource.\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name defines the name of the referenced object.\n                      minLength: 1\n                      type: string\n                    namespace:\n                      description: namespace defines the namespace of the referenced object.\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\n                      enum:\n                      - prometheuses\n                      - prometheusagents\n                      - thanosrulers\n                      - alertmanagers\n                      type: string\n                  required:\n                  - group\n                  - name\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - group\n                - resource\n                - name\n                - namespace\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0alertmanagerCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: alertmanagers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Alertmanager\n    listKind: AlertmanagerList\n    plural: alertmanagers\n    shortNames:\n    - am\n    singular: alertmanager\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Alertmanager\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `Alertmanager` custom resource definition (CRD) defines a desired [Alertmanager](https://prometheus.io/docs/alerting) setup to run in a Kubernetes cluster. It allows to specify many options such as the number of replicas, persistent storage and many more.\n\n          For each `Alertmanager` resource, the Operator deploys a `StatefulSet` in the same namespace. When there are two or more configured replicas, the Operator runs the Alertmanager instances in high-availability mode.\n\n          The resource defines via label and namespace selectors which `AlertmanagerConfig` objects should be associated to the deployed Alertmanager instances.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: |-\n              spec defines the specification of the desired behavior of the Alertmanager cluster. More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              additionalArgs:\n                description: |-\n                  additionalArgs allows setting additional arguments for the 'Alertmanager' container.\n                  It is intended for e.g. activating hidden flags which are not supported by\n                  the dedicated configuration options yet. The arguments are passed as-is to the\n                  Alertmanager container which may cause issues if they are invalid or not supported\n                  by the given Alertmanager version.\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: value defines the argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalPeers:\n                description: additionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\n                items:\n                  type: string\n                type: array\n              affinity:\n                description: affinity defines the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: |-\n                            An empty preferred scheduling term matches all objects with implicit weight 0\n                            (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to an update), the system\n                          may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: |-\n                                A null or empty node selector term matches no objects. The requirements of\n                                them are ANDed.\n                                The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                            x-kubernetes-list-type: atomic\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the anti-affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and subtracting\n                          \"weight\" from the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the anti-affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the anti-affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                type: object\n              alertmanagerConfigMatcherStrategy:\n                description: |-\n                  alertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects\n                  process incoming alerts.\n                properties:\n                  type:\n                    default: OnNamespace\n                    description: |-\n                      type defines the strategy used by\n                      AlertmanagerConfig objects to match alerts in the routes and inhibition\n                      rules.\n\n                      The default value is `OnNamespace`.\n                    enum:\n                    - OnNamespace\n                    - OnNamespaceExceptForAlertmanagerNamespace\n                    - None\n                    type: string\n                type: object\n              alertmanagerConfigNamespaceSelector:\n                description: |-\n                  alertmanagerConfigNamespaceSelector defines the namespaces to be selected for AlertmanagerConfig discovery. If nil, only\n                  check own namespace.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfigSelector:\n                description: alertmanagerConfigSelector defines the selector to be used for to merge and configure Alertmanager with.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfiguration:\n                description: |-\n                  alertmanagerConfiguration defines the configuration of Alertmanager.\n\n                  If defined, it takes precedence over the `configSecret` field.\n\n                  This is an *experimental feature*, it may change in any upcoming release\n                  in a breaking way.\n                properties:\n                  global:\n                    description: global defines the global parameters of the Alertmanager configuration.\n                    properties:\n                      httpConfig:\n                        description: httpConfig defines the default HTTP configuration.\n                        properties:\n                          authorization:\n                            description: |-\n                              authorization configures the Authorization header credentials used by\n                              the client.\n\n                              Cannot be set at the same time as `basicAuth`, `bearerTokenSecret` or `oauth2`.\n                            properties:\n                              credentials:\n                                description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              type:\n                                description: |-\n                                  type defines the authentication type. The value is case-insensitive.\n\n                                  \"Basic\" is not a supported value.\n\n                                  Default: \"Bearer\"\n                                type: string\n                            type: object\n                          basicAuth:\n                            description: |-\n                              basicAuth defines the Basic Authentication credentials used by the\n                              client.\n\n                              Cannot be set at the same time as `authorization`, `bearerTokenSecret` or `oauth2`.\n                            properties:\n                              password:\n                                description: |-\n                                  password defines a key of a Secret containing the password for\n                                  authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              username:\n                                description: |-\n                                  username defines a key of a Secret containing the username for\n                                  authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          bearerTokenSecret:\n                            description: |-\n                              bearerTokenSecret defines a key of a Secret containing the bearer token\n                              used by the client for authentication. The secret needs to be in the\n                              same namespace as the custom resource and readable by the Prometheus\n                              Operator.\n\n                              Cannot be set at the same time as `authorization`, `basicAuth` or `oauth2`.\n\n                              Deprecated: use `authorization` instead.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          enableHttp2:\n                            description: enableHttp2 can be used to disable HTTP2.\n                            type: boolean\n                          followRedirects:\n                            description: |-\n                              followRedirects defines whether the client should follow HTTP 3xx\n                              redirects.\n                            type: boolean\n                          noProxy:\n                            description: |-\n                              noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                              that should be excluded from proxying. IP and domain names can\n                              contain port numbers.\n\n                              It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                            type: string\n                          oauth2:\n                            description: |-\n                              oauth2 defines the OAuth2 settings used by the client.\n\n                              It requires Prometheus >= 2.27.0.\n\n                              Cannot be set at the same time as `authorization`, `basicAuth` or `bearerTokenSecret`.\n                            properties:\n                              clientId:\n                                description: |-\n                                  clientId defines a key of a Secret or ConfigMap containing the\n                                  OAuth2 client's ID.\n                                properties:\n                                  configMap:\n                                    description: configMap defines the ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: secret defines the Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              clientSecret:\n                                description: |-\n                                  clientSecret defines a key of a Secret containing the OAuth2\n                                  client's secret.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              endpointParams:\n                                additionalProperties:\n                                  type: string\n                                description: |-\n                                  endpointParams configures the HTTP parameters to append to the token\n                                  URL.\n                                type: object\n                              noProxy:\n                                description: |-\n                                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                                  that should be excluded from proxying. IP and domain names can\n                                  contain port numbers.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: string\n                              proxyConnectHeader:\n                                additionalProperties:\n                                  items:\n                                    description: SecretKeySelector selects a key of a Secret.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type: array\n                                description: |-\n                                  proxyConnectHeader optionally specifies headers to send to\n                                  proxies during CONNECT requests.\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              proxyFromEnvironment:\n                                description: |-\n                                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                                type: boolean\n                              proxyUrl:\n                                description: proxyUrl defines the HTTP proxy server to use.\n                                pattern: ^(http|https|socks5)://.+$\n                                type: string\n                              scopes:\n                                description: scopes defines the OAuth2 scopes used for the token request.\n                                items:\n                                  type: string\n                                type: array\n                              tlsConfig:\n                                description: |-\n                                  tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                                  It requires Prometheus >= v2.43.0.\n                                properties:\n                                  ca:\n                                    description: ca defines the Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: cert defines the Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: configMap defines the ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: secret defines the Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            default: \"\"\n                                            description: |-\n                                              Name of the referent.\n                                              This field is effectively required, but due to backwards compatibility is\n                                              allowed to be empty. Instances of this type with an empty value here are\n                                              almost certainly wrong.\n                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: insecureSkipVerify defines how to disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: keySecret defines the Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  maxVersion:\n                                    description: |-\n                                      maxVersion defines the maximum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  minVersion:\n                                    description: |-\n                                      minVersion defines the minimum acceptable TLS version.\n\n                                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                    enum:\n                                    - TLS10\n                                    - TLS11\n                                    - TLS12\n                                    - TLS13\n                                    type: string\n                                  serverName:\n                                    description: serverName is used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                              tokenUrl:\n                                description: tokenUrl defines the URL to fetch the token from.\n                                minLength: 1\n                                type: string\n                            required:\n                            - clientId\n                            - clientSecret\n                            - tokenUrl\n                            type: object\n                          proxyConnectHeader:\n                            additionalProperties:\n                              items:\n                                description: SecretKeySelector selects a key of a Secret.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              type: array\n                            description: |-\n                              proxyConnectHeader optionally specifies headers to send to\n                              proxies during CONNECT requests.\n\n                              It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          proxyFromEnvironment:\n                            description: |-\n                              proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                              It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                            type: boolean\n                          proxyUrl:\n                            description: proxyUrl defines the HTTP proxy server to use.\n                            pattern: ^(http|https|socks5)://.+$\n                            type: string\n                          tlsConfig:\n                            description: tlsConfig defines the TLS configuration used by the client.\n                            properties:\n                              ca:\n                                description: ca defines the Certificate authority used when verifying server certificates.\n                                properties:\n                                  configMap:\n                                    description: configMap defines the ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: secret defines the Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: cert defines the Client certificate to present when doing client-authentication.\n                                properties:\n                                  configMap:\n                                    description: configMap defines the ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: secret defines the Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: insecureSkipVerify defines how to disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: keySecret defines the Secret containing the client key file for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              maxVersion:\n                                description: |-\n                                  maxVersion defines the maximum acceptable TLS version.\n\n                                  It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                enum:\n                                - TLS10\n                                - TLS11\n                                - TLS12\n                                - TLS13\n                                type: string\n                              minVersion:\n                                description: |-\n                                  minVersion defines the minimum acceptable TLS version.\n\n                                  It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                enum:\n                                - TLS10\n                                - TLS11\n                                - TLS12\n                                - TLS13\n                                type: string\n                              serverName:\n                                description: serverName is used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                        type: object\n                      jira:\n                        description: jira defines the default configuration for Jira.\n                        properties:\n                          apiURL:\n                            description: |-\n                              apiURL defines the default Jira API URL.\n\n                              It requires Alertmanager >= v0.28.0.\n                            pattern: ^(http|https)://.+$\n                            type: string\n                        type: object\n                      opsGenieApiKey:\n                        description: opsGenieApiKey defines the default OpsGenie API Key.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      opsGenieApiUrl:\n                        description: opsGenieApiUrl defines the default OpsGenie API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      pagerdutyUrl:\n                        description: pagerdutyUrl defines the default Pagerduty URL.\n                        pattern: ^(http|https)://.+$\n                        type: string\n                      resolveTimeout:\n                        description: |-\n                          resolveTimeout defines the default value used by alertmanager if the alert does\n                          not include EndsAt, after this time passes it can declare the alert as resolved if it has not been updated.\n                          This has no impact on alerts from Prometheus, as they always include EndsAt.\n                        pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                        type: string\n                      rocketChat:\n                        description: rocketChat defines the default configuration for Rocket Chat.\n                        properties:\n                          apiURL:\n                            description: |-\n                              apiURL defines the default Rocket Chat API URL.\n\n                              It requires Alertmanager >= v0.28.0.\n                            pattern: ^(http|https)://.+$\n                            type: string\n                          token:\n                            description: |-\n                              token defines the default Rocket Chat token.\n\n                              It requires Alertmanager >= v0.28.0.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          tokenID:\n                            description: |-\n                              tokenID defines the default Rocket Chat Token ID.\n\n                              It requires Alertmanager >= v0.28.0.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      slackApiUrl:\n                        description: slackApiUrl defines the default Slack API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      smtp:\n                        description: smtp defines global SMTP parameters.\n                        properties:\n                          authIdentity:\n                            description: authIdentity represents SMTP Auth using PLAIN\n                            type: string\n                          authPassword:\n                            description: authPassword represents SMTP Auth using LOGIN and PLAIN.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authSecret:\n                            description: authSecret represents SMTP Auth using CRAM-MD5.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authUsername:\n                            description: authUsername represents SMTP Auth using CRAM-MD5, LOGIN and PLAIN. If empty, Alertmanager doesn't authenticate to the SMTP server.\n                            type: string\n                          forceImplicitTLS:\n                            description: |-\n                              forceImplicitTLS defines whether to force use of implicit TLS (direct TLS connection) for better security.\n                              true: force use of implicit TLS (direct TLS connection on any port)\n                              false: force disable implicit TLS (use explicit TLS/STARTTLS if required)\n                              nil (default): auto-detect based on port (465=implicit, other=explicit) for backward compatibility\n                              It requires Alertmanager >= v0.31.0.\n                            type: boolean\n                          from:\n                            description: from defines the default SMTP From header field.\n                            type: string\n                          hello:\n                            description: hello defines the default hostname to identify to the SMTP server.\n                            type: string\n                          requireTLS:\n                            description: |-\n                              requireTLS defines the default SMTP TLS requirement.\n                              Note that Go does not support unencrypted connections to remote SMTP endpoints.\n                            type: boolean\n                          smartHost:\n                            description: smartHost defines the default SMTP smarthost used for sending emails.\n                            properties:\n                              host:\n                                description: host defines the host's address, it can be a DNS name or a literal IP address.\n                                minLength: 1\n                                type: string\n                              port:\n                                description: port defines the host's port, it can be a literal port number or a port name.\n                                minLength: 1\n                                type: string\n                            required:\n                            - host\n                            - port\n                            type: object\n                          tlsConfig:\n                            description: tlsConfig defines the default TLS configuration for SMTP receivers\n                            properties:\n                              ca:\n                                description: ca defines the Certificate authority used when verifying server certificates.\n                                properties:\n                                  configMap:\n                                    description: configMap defines the ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: secret defines the Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: cert defines the Client certificate to present when doing client-authentication.\n                                properties:\n                                  configMap:\n                                    description: configMap defines the ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: secret defines the Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        default: \"\"\n                                        description: |-\n                                          Name of the referent.\n                                          This field is effectively required, but due to backwards compatibility is\n                                          allowed to be empty. Instances of this type with an empty value here are\n                                          almost certainly wrong.\n                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: insecureSkipVerify defines how to disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: keySecret defines the Secret containing the client key file for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              maxVersion:\n                                description: |-\n                                  maxVersion defines the maximum acceptable TLS version.\n\n                                  It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                                enum:\n                                - TLS10\n                                - TLS11\n                                - TLS12\n                                - TLS13\n                                type: string\n                              minVersion:\n                                description: |-\n                                  minVersion defines the minimum acceptable TLS version.\n\n                                  It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                                enum:\n                                - TLS10\n                                - TLS11\n                                - TLS12\n                                - TLS13\n                                type: string\n                              serverName:\n                                description: serverName is used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                        type: object\n                      telegram:\n                        description: telegram defines the default Telegram config\n                        properties:\n                          apiURL:\n                            description: |-\n                              apiURL defines he default Telegram API URL.\n\n                              It requires Alertmanager >= v0.24.0.\n                            pattern: ^(http|https)://.+$\n                            type: string\n                        type: object\n                      victorops:\n                        description: victorops defines the default configuration for VictorOps.\n                        properties:\n                          apiKey:\n                            description: apiKey defines the default VictorOps API Key.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          apiURL:\n                            description: apiURL defines the default VictorOps API URL.\n                            pattern: ^(http|https)://.+$\n                            type: string\n                        type: object\n                      webex:\n                        description: webex defines the default configuration for Webex.\n                        properties:\n                          apiURL:\n                            description: |-\n                              apiURL defines the is the default Webex API URL.\n\n                              It requires Alertmanager >= v0.25.0.\n                            pattern: ^(http|https)://.+$\n                            type: string\n                        type: object\n                      wechat:\n                        description: wechat defines the default WeChat Config\n                        properties:\n                          apiCorpID:\n                            description: apiCorpID defines the default WeChat API Corporate ID.\n                            minLength: 1\n                            type: string\n                          apiSecret:\n                            description: apiSecret defines the default WeChat API Secret.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          apiURL:\n                            description: |-\n                              apiURL defines he default WeChat API URL.\n                              The default value is \"https://qyapi.weixin.qq.com/cgi-bin/\"\n                            pattern: ^(http|https)://.+$\n                            type: string\n                        type: object\n                    type: object\n                  name:\n                    description: |-\n                      name defines the name of the AlertmanagerConfig custom resource which is used to generate the Alertmanager configuration.\n                      It must be defined in the same namespace as the Alertmanager object.\n                      The operator will not enforce a `namespace` label for routes and inhibition rules.\n                    minLength: 1\n                    type: string\n                  templates:\n                    description: templates defines the custom notification templates.\n                    items:\n                      description: SecretOrConfigMap allows to specify data as a Secret or ConfigMap. Fields are mutually exclusive.\n                      properties:\n                        configMap:\n                          description: configMap defines the ConfigMap containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key to select.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the ConfigMap or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        secret:\n                          description: secret defines the Secret containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    type: array\n                type: object\n              automountServiceAccountToken:\n                description: |-\n                  automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod.\n                  If the service account has `automountServiceAccountToken: true`, set the field to `false` to opt out of automounting API credentials.\n                type: boolean\n              baseImage:\n                description: |-\n                  baseImage that is used to deploy pods, without tag.\n                  Deprecated: use 'image' instead.\n                type: string\n              clusterAdvertiseAddress:\n                description: |-\n                  clusterAdvertiseAddress defines the explicit address to advertise in cluster.\n                  Needs to be provided for non RFC1918 [1] (public) addresses.\n                  [1] RFC1918: https://tools.ietf.org/html/rfc1918\n                type: string\n              clusterGossipInterval:\n                description: clusterGossipInterval defines the interval between gossip attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterLabel:\n                description: |-\n                  clusterLabel defines the identifier that uniquely identifies the Alertmanager cluster.\n                  You should only set it when the Alertmanager cluster includes Alertmanager instances which are external to this Alertmanager resource. In practice, the addresses of the external instances are provided via the `.spec.additionalPeers` field.\n                type: string\n              clusterPeerTimeout:\n                description: clusterPeerTimeout defines the timeout for cluster peering.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterPushpullInterval:\n                description: clusterPushpullInterval defines the interval between pushpull attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterTLS:\n                description: |-\n                  clusterTLS defines the mutual TLS configuration for the Alertmanager cluster's gossip protocol.\n\n                  It requires Alertmanager >= 0.24.0.\n                properties:\n                  client:\n                    description: client defines the client-side configuration for mutual TLS.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                  server:\n                    description: server defines the server-side configuration for mutual TLS.\n                    properties:\n                      cert:\n                        description: |-\n                          cert defines the Secret or ConfigMap containing the TLS certificate for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `certFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: |-\n                          certFile defines the path to the TLS certificate file in the container for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `cert`.\n                        type: string\n                      cipherSuites:\n                        description: |-\n                          cipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\n\n                          If not defined, the Go default cipher suites are used.\n                          Available cipher suites are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: |-\n                          client_ca defines the Secret or ConfigMap containing the CA certificate for client certificate\n                          authentication to the server.\n\n                          It is mutually exclusive with `clientCAFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: |-\n                          clientAuthType defines the server policy for client TLS authentication.\n\n                          For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType\n                        type: string\n                      clientCAFile:\n                        description: |-\n                          clientCAFile defines the path to the CA certificate file for client certificate authentication to\n                          the server.\n\n                          It is mutually exclusive with `client_ca`.\n                        type: string\n                      curvePreferences:\n                        description: |-\n                          curvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference\n                          order.\n\n                          Available curves are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#CurveID\n                        items:\n                          type: string\n                        type: array\n                      keyFile:\n                        description: |-\n                          keyFile defines the path to the TLS private key file in the container for the web server.\n\n                          If defined, either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keySecret`.\n                        type: string\n                      keySecret:\n                        description: |-\n                          keySecret defines the secret containing the TLS private key for the web server.\n\n                          Either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keyFile`.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: maxVersion defines the Maximum TLS version that is acceptable.\n                        type: string\n                      minVersion:\n                        description: minVersion defines the minimum TLS version that is acceptable.\n                        type: string\n                      preferServerCipherSuites:\n                        description: |-\n                          preferServerCipherSuites defines whether the server selects the client's most preferred cipher\n                          suite, or the server's most preferred cipher suite.\n\n                          If true then the server's preference, as expressed in\n                          the order of elements in cipherSuites, is used.\n                        type: boolean\n                    type: object\n                required:\n                - client\n                - server\n                type: object\n              configMaps:\n                description: |-\n                  configMaps defines a list of ConfigMaps in the same namespace as the Alertmanager\n                  object, which shall be mounted into the Alertmanager Pods.\n                  Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-<configmap-name>`.\n                  The ConfigMaps are mounted into `/etc/alertmanager/configmaps/<configmap-name>` in the 'alertmanager' container.\n                items:\n                  type: string\n                type: array\n              configSecret:\n                description: |-\n                  configSecret defines the name of a Kubernetes Secret in the same namespace as the\n                  Alertmanager object, which contains the configuration for this Alertmanager\n                  instance. If empty, it defaults to `alertmanager-<alertmanager-name>`.\n\n                  The Alertmanager configuration should be available under the\n                  `alertmanager.yaml` key. Additional keys from the original secret are\n                  copied to the generated secret and mounted into the\n                  `/etc/alertmanager/config` directory in the `alertmanager` container.\n\n                  If either the secret or the `alertmanager.yaml` key is missing, the\n                  operator provisions a minimal Alertmanager configuration with one empty\n                  receiver (effectively dropping alert notifications).\n                type: string\n              containers:\n                description: |-\n                  containers allows injecting additional containers or modifying operator\n                  generated containers. This can be used to allow adding an authentication\n                  proxy to the Pods or to change the behavior of an operator generated\n                  container. Containers described here modify an operator generated\n                  container if they share the same name and modifications are done via a\n                  strategic merge patch.\n\n                  The names of containers managed by the operator are:\n                  * `alertmanager`\n                  * `config-reloader`\n                  * `thanos-sidecar`\n\n                  Overriding containers which are managed by the operator require careful\n                  testing, especially when upgrading to a new version of the operator.\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              dnsConfig:\n                description: dnsConfig defines the DNS configuration for the pods.\n                properties:\n                  nameservers:\n                    description: |-\n                      nameservers defines the list of DNS name server IP addresses.\n                      This will be appended to the base nameservers generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                  options:\n                    description: |-\n                      options defines the list of DNS resolver options.\n                      This will be merged with the base options generated from DNSPolicy.\n                      Resolution options given in Options\n                      will override those that appear in the base DNSPolicy.\n                    items:\n                      description: PodDNSConfigOption defines DNS resolver options of a pod.\n                      properties:\n                        name:\n                          description: name is required and must be unique.\n                          minLength: 1\n                          type: string\n                        value:\n                          description: value is optional.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  searches:\n                    description: |-\n                      searches defines the list of DNS search domains for host-name lookup.\n                      This will be appended to the base search paths generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                type: object\n              dnsPolicy:\n                description: dnsPolicy defines the DNS policy for the pods.\n                enum:\n                - ClusterFirstWithHostNet\n                - ClusterFirst\n                - Default\n                - None\n                type: string\n              enableFeatures:\n                description: |-\n                  enableFeatures defines the Alertmanager's feature flags. By default, no features are enabled.\n                  Enabling features which are disabled by default is entirely outside the\n                  scope of what the maintainers will support and by doing so, you accept\n                  that this behaviour may break at any time without notice.\n\n                  It requires Alertmanager >= 0.27.0.\n                items:\n                  type: string\n                type: array\n              enableServiceLinks:\n                description: enableServiceLinks defines whether information about services should be injected into pod's environment variables\n                type: boolean\n              externalUrl:\n                description: |-\n                  externalUrl defines the URL used to access the Alertmanager web service. This is\n                  necessary to generate correct URLs. This is necessary if Alertmanager is not\n                  served from root of a DNS name.\n                type: string\n              forceEnableClusterMode:\n                description: |-\n                  forceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica.\n                  Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.\n                type: boolean\n              hostAliases:\n                description: hostAliases Pods configuration\n                items:\n                  description: |-\n                    HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\n                    pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: hostnames defines hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: ip defines the IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: |-\n                  hostNetwork controls whether the pod may use the node network namespace.\n\n                  Make sure to understand the security implications if you want to enable\n                  it (https://kubernetes.io/docs/concepts/configuration/overview/).\n\n                  When hostNetwork is enabled, this will set the DNS policy to\n                  `ClusterFirstWithHostNet` automatically (unless `.spec.dnsPolicy` is set\n                  to a different value).\n                type: boolean\n              hostUsers:\n                description: |-\n                  hostUsers supports the user space in Kubernetes.\n\n                  More info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\n\n                  The feature requires at least Kubernetes 1.28 with the `UserNamespacesSupport` feature gate enabled.\n                  Starting Kubernetes 1.33, the feature is enabled by default.\n                type: boolean\n              image:\n                description: |-\n                  image if specified has precedence over baseImage, tag and sha\n                  combinations. Specifying the version is still necessary to ensure the\n                  Prometheus Operator knows what version of Alertmanager is being\n                  configured.\n                type: string\n              imagePullPolicy:\n                description: |-\n                  imagePullPolicy for the 'alertmanager', 'init-config-reloader' and 'config-reloader' containers.\n                  See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: |-\n                  imagePullSecrets An optional list of references to secrets in the same namespace\n                  to use for pulling prometheus and alertmanager images from registries\n                  see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n                items:\n                  description: |-\n                    LocalObjectReference contains enough information to let you locate the\n                    referenced object inside the same namespace.\n                  properties:\n                    name:\n                      default: \"\"\n                      description: |-\n                        Name of the referent.\n                        This field is effectively required, but due to backwards compatibility is\n                        allowed to be empty. Instances of this type with an empty value here are\n                        almost certainly wrong.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: |-\n                  initContainers allows injecting initContainers to the Pod definition. Those\n                  can be used to e.g.  fetch secrets for injection into the Prometheus\n                  configuration from external sources. Any errors during the execution of\n                  an initContainer will lead to a restart of the Pod. More info:\n                  https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done via a\n                  strategic merge patch.\n\n                  The names of init container name managed by the operator are:\n                  * `init-config-reloader`.\n\n                  Overriding init containers which are managed by the operator require\n                  careful testing, especially when upgrading to a new version of the\n                  operator.\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              limits:\n                description: limits defines the limits command line flags when starting Alertmanager.\n                properties:\n                  maxPerSilenceBytes:\n                    description: |-\n                      maxPerSilenceBytes defines the maximum size of an individual silence as stored on disk. This corresponds to the Alertmanager's\n                      `--silences.max-per-silence-bytes` flag.\n                      It requires Alertmanager >= v0.28.0.\n                    pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                    type: string\n                  maxSilences:\n                    description: |-\n                      maxSilences defines the maximum number active and pending silences. This corresponds to the\n                      Alertmanager's `--silences.max-silences` flag.\n                      It requires Alertmanager >= v0.28.0.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                type: object\n              listenLocal:\n                description: |-\n                  listenLocal defines the Alertmanager server listen on loopback, so that it\n                  does not bind against the Pod IP. Note this is only for the Alertmanager\n                  UI, not the gossip communication.\n                type: boolean\n              logFormat:\n                description: logFormat for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: logLevel for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: |-\n                  minReadySeconds defines the minimum number of seconds for which a newly\n                  created pod should be ready without any of its container crashing for it\n                  to be considered available.\n\n                  If unset, pods will be considered available as soon as they are ready.\n\n                  When the Alertmanager version is greater than or equal to v0.30.0, the\n                  duration is also used to delay the first flush of the aggregation\n                  groups. This delay helps ensuring that all alerts have been resent by\n                  the Prometheus instances to Alertmanager after a roll-out. It is\n                  possible to override this behavior passing a custom value via\n                  `.spec.additionalArgs`.\n                format: int32\n                minimum: 0\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: nodeSelector defines which Nodes the Pods are scheduled on.\n                type: object\n              paused:\n                description: |-\n                  paused if set to true all actions on the underlying managed objects are not\n                  going to be performed, except for delete actions.\n                type: boolean\n              persistentVolumeClaimRetentionPolicy:\n                description: |-\n                  persistentVolumeClaimRetentionPolicy controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\n                  The default behavior is all PVCs are retained.\n                  This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\n                  It requires enabling the StatefulSetAutoDeletePVC feature gate.\n                properties:\n                  whenDeleted:\n                    description: |-\n                      WhenDeleted specifies what happens to PVCs created from StatefulSet\n                      VolumeClaimTemplates when the StatefulSet is deleted. The default policy\n                      of `Retain` causes PVCs to not be affected by StatefulSet deletion. The\n                      `Delete` policy causes those PVCs to be deleted.\n                    type: string\n                  whenScaled:\n                    description: |-\n                      WhenScaled specifies what happens to PVCs created from StatefulSet\n                      VolumeClaimTemplates when the StatefulSet is scaled down. The default\n                      policy of `Retain` causes PVCs to not be affected by a scaledown. The\n                      `Delete` policy causes the associated PVCs for any excess pods above\n                      the replica count to be deleted.\n                    type: string\n                type: object\n              podManagementPolicy:\n                description: |-\n                  podManagementPolicy defines the policy for creating/deleting pods when\n                  scaling up and down.\n\n                  Unlike the default StatefulSet behavior, the default policy is\n                  `Parallel` to avoid manual intervention in case a pod gets stuck during\n                  a rollout.\n\n                  Note that updating this value implies the recreation of the StatefulSet\n                  which incurs a service outage.\n                enum:\n                - OrderedReady\n                - Parallel\n                type: string\n              podMetadata:\n                description: |-\n                  podMetadata defines labels and annotations which are propagated to the Alertmanager pods.\n\n                  The following items are reserved and cannot be overridden:\n                  * \"alertmanager\" label, set to the name of the Alertmanager instance.\n                  * \"app.kubernetes.io/instance\" label, set to the name of the Alertmanager instance.\n                  * \"app.kubernetes.io/managed-by\" label, set to \"prometheus-operator\".\n                  * \"app.kubernetes.io/name\" label, set to \"alertmanager\".\n                  * \"app.kubernetes.io/version\" label, set to the Alertmanager version.\n                  * \"kubectl.kubernetes.io/default-container\" annotation, set to \"alertmanager\".\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      annotations defines an unstructured key value map stored with a resource that may be\n                      set by external tools to store and retrieve arbitrary metadata. They are not\n                      queryable and should be preserved when modifying objects.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      labels define the map of string keys and values that can be used to organize and categorize\n                      (scope and select) objects. May match selectors of replication controllers\n                      and services.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                    type: object\n                  name:\n                    description: |-\n                      name must be unique within a namespace. Is required when creating resources, although\n                      some resources may allow a client to request the generation of an appropriate name\n                      automatically. Name is primarily intended for creation idempotence and configuration\n                      definition.\n                      Cannot be updated.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: |-\n                  portName defines the port's name for the pods and governing service.\n                  Defaults to `web`.\n                type: string\n              priorityClassName:\n                description: priorityClassName assigned to the Pods\n                type: string\n              replicas:\n                description: |-\n                  replicas defines the expected size of the alertmanager cluster. The controller will\n                  eventually make the size of the running cluster equal to the expected\n                  size.\n                format: int32\n                type: integer\n              resources:\n                description: resources defines the resource requests and limits of the Pods.\n                properties:\n                  claims:\n                    description: |-\n                      Claims lists the names of resources, defined in spec.resourceClaims,\n                      that are used by this container.\n\n                      This field depends on the\n                      DynamicResourceAllocation feature gate.\n\n                      This field is immutable. It can only be set for containers.\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: |-\n                            Name must match the name of one entry in pod.spec.resourceClaims of\n                            the Pod where this field is used. It makes that resource available\n                            inside a container.\n                          type: string\n                        request:\n                          description: |-\n                            Request is the name chosen for a request in the referenced claim.\n                            If empty, everything from the claim is made available, otherwise\n                            only the result of this request.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Limits describes the maximum amount of compute resources allowed.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Requests describes the minimum amount of compute resources required.\n                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                type: object\n              retention:\n                default: 120h\n                description: |-\n                  retention defines the time duration Alertmanager shall retain data for. Default is '120h',\n                  and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours).\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: |-\n                  routePrefix Alertmanager registers HTTP handlers for. This is useful,\n                  if using ExternalURL and a proxy is rewriting HTTP routes of a request,\n                  and the actual ExternalURL is still true, but the server serves requests\n                  under a different route prefix. For example for use with `kubectl proxy`.\n                type: string\n              schedulerName:\n                description: schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\n                minLength: 1\n                type: string\n              secrets:\n                description: |-\n                  secrets is a list of Secrets in the same namespace as the Alertmanager\n                  object, which shall be mounted into the Alertmanager Pods.\n                  Each Secret is added to the StatefulSet definition as a volume named `secret-<secret-name>`.\n                  The Secrets are mounted into `/etc/alertmanager/secrets/<secret-name>` in the 'alertmanager' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: |-\n                  securityContext holds pod-level security attributes and common container settings.\n                  This defaults to the default PodSecurityContext.\n                properties:\n                  appArmorProfile:\n                    description: |-\n                      appArmorProfile is the AppArmor options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile loaded on the node that should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must match the loaded name of the profile.\n                          Must be set if and only if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of AppArmor profile will be applied.\n                          Valid options are:\n                            Localhost - a profile pre-loaded on the node.\n                            RuntimeDefault - the container runtime's default profile.\n                            Unconfined - no AppArmor enforcement.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  fsGroup:\n                    description: |-\n                      A special supplemental group that applies to all containers in a pod.\n                      Some volume types allow the Kubelet to change the ownership of that volume\n                      to be owned by the pod:\n\n                      1. The owning GID will be the FSGroup\n                      2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw----\n\n                      If unset, the Kubelet will not modify the ownership and permissions of any volume.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: |-\n                      fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\n                      before being exposed inside Pod. This field will only apply to\n                      volume types which support fsGroup based ownership(and permissions).\n                      It will have no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir.\n                      Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  runAsGroup:\n                    description: |-\n                      The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: |-\n                      Indicates that the container must run as a non-root user.\n                      If true, the Kubelet will validate the image at runtime to ensure that it\n                      does not run as UID 0 (root) and fail to start the container if it does.\n                      If unset or false, no such validation will be performed.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: |-\n                      The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxChangePolicy:\n                    description: |-\n                      seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.\n                      It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.\n                      Valid values are \"MountOption\" and \"Recursive\".\n\n                      \"Recursive\" means relabeling of all files on all Pod volumes by the container runtime.\n                      This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.\n\n                      \"MountOption\" mounts all eligible Pod volumes with `-o context` mount option.\n                      This requires all Pods that share the same volume to use the same SELinux label.\n                      It is not possible to share the same volume among privileged and unprivileged Pods.\n                      Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes\n                      whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their\n                      CSIDriver instance. Other volumes are always re-labelled recursively.\n                      \"MountOption\" value is allowed only when SELinuxMount feature gate is enabled.\n\n                      If not specified and SELinuxMount feature gate is enabled, \"MountOption\" is used.\n                      If not specified and SELinuxMount feature gate is disabled, \"MountOption\" is used for ReadWriteOncePod volumes\n                      and \"Recursive\" for all other volumes.\n\n                      This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.\n\n                      All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  seLinuxOptions:\n                    description: |-\n                      The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random SELinux context for each\n                      container.  May also be set in SecurityContext.  If set in\n                      both SecurityContext and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: |-\n                      The seccomp options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile defined in a file on the node should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                          Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of seccomp profile will be applied.\n                          Valid options are:\n\n                          Localhost - a profile defined in a file on the node should be used.\n                          RuntimeDefault - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: |-\n                      A list of groups applied to the first process run in each container, in\n                      addition to the container's primary GID and fsGroup (if specified).  If\n                      the SupplementalGroupsPolicy feature is enabled, the\n                      supplementalGroupsPolicy field determines whether these are in addition\n                      to or instead of any group memberships defined in the container image.\n                      If unspecified, no additional groups are added, though group memberships\n                      defined in the container image may still be used, depending on the\n                      supplementalGroupsPolicy field.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  supplementalGroupsPolicy:\n                    description: |-\n                      Defines how supplemental groups of the first container processes are calculated.\n                      Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used.\n                      (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled\n                      and the container runtime must implement support for this feature.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  sysctls:\n                    description: |-\n                      Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\n                      sysctls (by the container runtime) might fail to launch.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  windowsOptions:\n                    description: |-\n                      The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext will be used.\n                      If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                      Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: |-\n                          GMSACredentialSpec is where the GMSA admission webhook\n                          (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                          GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: |-\n                          HostProcess determines if a container should be run as a 'Host Process' container.\n                          All of a Pod's containers must have the same effective HostProcess value\n                          (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                          In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: |-\n                          The UserName in Windows to run the entrypoint of the container process.\n                          Defaults to the user specified in image metadata if unspecified.\n                          May also be set in PodSecurityContext. If set in both SecurityContext and\n                          PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: |-\n                  serviceAccountName is the name of the ServiceAccount to use to run the\n                  Prometheus Pods.\n                type: string\n              serviceName:\n                description: |-\n                  serviceName defines the service name used by the underlying StatefulSet(s) as the governing service.\n                  If defined, the Service  must be created before the Alertmanager resource in the same namespace and it must define a selector that matches the pod labels.\n                  If empty, the operator will create and manage a headless service named `alertmanager-operated` for Alertmanager resources.\n                  When deploying multiple Alertmanager resources in the same namespace, it is recommended to specify a different value for each.\n                  See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\n                minLength: 1\n                type: string\n              sha:\n                description: |-\n                  sha of Alertmanager container image to be deployed. Defaults to the value of `version`.\n                  Similar to a tag, but the SHA explicitly deploys an immutable container image.\n                  Version and Tag are ignored if SHA is set.\n                  Deprecated: use 'image' instead. The image digest can be specified as part of the image URL.\n                type: string\n              storage:\n                description: |-\n                  storage defines the definition of how storage will be used by the Alertmanager\n                  instances.\n                properties:\n                  disableMountSubPath:\n                    description: 'disableMountSubPath deprecated: subPath usage will be removed in a future release.'\n                    type: boolean\n                  emptyDir:\n                    description: |-\n                      emptyDir to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\n                    properties:\n                      medium:\n                        description: |-\n                          medium represents what type of storage medium should back this directory.\n                          The default is \"\" which means to use the node's default medium.\n                          Must be an empty string (default) or Memory.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                          The size limit is also applicable for memory medium.\n                          The maximum usage on memory medium EmptyDir would be the minimum value between\n                          the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                          The default is nil which means that the limit is undefined.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: |-\n                      ephemeral to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15.\n                      For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate.\n                      More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes\n                    properties:\n                      volumeClaimTemplate:\n                        description: |-\n                          Will be used to create a stand-alone PVC to provision the volume.\n                          The pod in which this EphemeralVolumeSource is embedded will be the\n                          owner of the PVC, i.e. the PVC will be deleted together with the\n                          pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                          `<volume name>` is the name from the `PodSpec.Volumes` array\n                          entry. Pod validation will reject the pod if the concatenated name\n                          is not valid for a PVC (for example, too long).\n\n                          An existing PVC with that name that is not owned by the pod\n                          will *not* be used for the pod to avoid using an unrelated\n                          volume by mistake. Starting the pod is then blocked until\n                          the unrelated PVC is removed. If such a pre-created PVC is\n                          meant to be used by the pod, the PVC has to updated with an\n                          owner reference to the pod once the pod exists. Normally\n                          this should not be necessary, but it may be useful when\n                          manually reconstructing a broken cluster.\n\n                          This field is read-only and no changes will be made by Kubernetes\n                          to the PVC after it has been created.\n\n                          Required, must not be nil.\n                        properties:\n                          metadata:\n                            description: |-\n                              May contain labels and annotations that will be copied into the PVC\n                              when creating it. No other fields are allowed and will be rejected during\n                              validation.\n                            type: object\n                          spec:\n                            description: |-\n                              The specification for the PersistentVolumeClaim. The entire content is\n                              copied unchanged into the PVC that gets created from this\n                              template. The same fields as in a PersistentVolumeClaim\n                              are also valid here.\n                            properties:\n                              accessModes:\n                                description: |-\n                                  accessModes contains the desired access modes the volume should have.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              dataSource:\n                                description: |-\n                                  dataSource field can be used to specify either:\n                                  * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim)\n                                  If the provisioner or an external controller can support the specified data source,\n                                  it will create a new volume based on the contents of the specified data source.\n                                  When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                  and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                  If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: |-\n                                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a non-empty API group (non\n                                  core object) or a PersistentVolumeClaim object.\n                                  When this field is specified, volume binding will only succeed if the type of\n                                  the specified object matches some installed volume populator or dynamic\n                                  provisioner.\n                                  This field will replace the functionality of the dataSource field and as such\n                                  if both fields are non-empty, they must have the same value. For backwards\n                                  compatibility, when namespace isn't specified in dataSourceRef,\n                                  both fields (dataSource and dataSourceRef) will be set to the same\n                                  value automatically if one of them is empty and the other is non-empty.\n                                  When namespace is specified in dataSourceRef,\n                                  dataSource isn't set to the same value and must be empty.\n                                  There are three important differences between dataSource and dataSourceRef:\n                                  * While dataSource only allows two specific types of objects, dataSourceRef\n                                    allows any non-core object, as well as PersistentVolumeClaim objects.\n                                  * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                    preserves all values, and generates an error if a disallowed value is\n                                    specified.\n                                  * While dataSource only allows local objects, dataSourceRef allows objects\n                                    in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                  (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: |-\n                                      Namespace is the namespace of resource being referenced\n                                      Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                      (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: |-\n                                  resources represents the minimum resources the volume should have.\n                                  Users are allowed to specify resource requirements\n                                  that are lower than previous value but must still be higher than capacity recorded in the\n                                  status field of the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                properties:\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Limits describes the maximum amount of compute resources allowed.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Requests describes the minimum amount of compute resources required.\n                                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: |-\n                                        A label selector requirement is a selector that contains values, a key, and an operator that\n                                        relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: |-\n                                            operator represents a key's relationship to a set of values.\n                                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: |-\n                                            values is an array of string values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array is replaced during a strategic\n                                            merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: |-\n                                  storageClassName is the name of the StorageClass required by the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                type: string\n                              volumeAttributesClassName:\n                                description: |-\n                                  volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                  If specified, the CSI driver will create or update the volume with the attributes defined\n                                  in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                  it can be changed after the claim is created. An empty string or nil value indicates that no\n                                  VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                  this field can be reset to its previous value (including nil) to cancel the modification.\n                                  If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                  set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                  exists.\n                                  More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                type: string\n                              volumeMode:\n                                description: |-\n                                  volumeMode defines what type of volume is required by the claim.\n                                  Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: |-\n                      volumeClaimTemplate defines the PVC spec to be used by the Prometheus StatefulSets.\n                      The easiest way to use a volume that cannot be automatically provisioned\n                      is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: |-\n                          APIVersion defines the versioned schema of this representation of an object.\n                          Servers should convert recognized schemas to the latest internal value, and\n                          may reject unrecognized values.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n                        type: string\n                      kind:\n                        description: |-\n                          Kind is a string value representing the REST resource this object represents.\n                          Servers may infer this from the endpoint the client submits requests to.\n                          Cannot be updated.\n                          In CamelCase.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n                        type: string\n                      metadata:\n                        description: metadata defines EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              annotations defines an unstructured key value map stored with a resource that may be\n                              set by external tools to store and retrieve arbitrary metadata. They are not\n                              queryable and should be preserved when modifying objects.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              labels define the map of string keys and values that can be used to organize and categorize\n                              (scope and select) objects. May match selectors of replication controllers\n                              and services.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                            type: object\n                          name:\n                            description: |-\n                              name must be unique within a namespace. Is required when creating resources, although\n                              some resources may allow a client to request the generation of an appropriate name\n                              automatically. Name is primarily intended for creation idempotence and configuration\n                              definition.\n                              Cannot be updated.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                            type: string\n                        type: object\n                      spec:\n                        description: |-\n                          spec defines the specification of the  characteristics of a volume requested by a pod author.\n                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the desired access modes the volume should have.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          dataSource:\n                            description: |-\n                              dataSource field can be used to specify either:\n                              * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim)\n                              If the provisioner or an external controller can support the specified data source,\n                              it will create a new volume based on the contents of the specified data source.\n                              When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                              and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                              If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: |-\n                              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty API group (non\n                              core object) or a PersistentVolumeClaim object.\n                              When this field is specified, volume binding will only succeed if the type of\n                              the specified object matches some installed volume populator or dynamic\n                              provisioner.\n                              This field will replace the functionality of the dataSource field and as such\n                              if both fields are non-empty, they must have the same value. For backwards\n                              compatibility, when namespace isn't specified in dataSourceRef,\n                              both fields (dataSource and dataSourceRef) will be set to the same\n                              value automatically if one of them is empty and the other is non-empty.\n                              When namespace is specified in dataSourceRef,\n                              dataSource isn't set to the same value and must be empty.\n                              There are three important differences between dataSource and dataSourceRef:\n                              * While dataSource only allows two specific types of objects, dataSourceRef\n                                allows any non-core object, as well as PersistentVolumeClaim objects.\n                              * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                preserves all values, and generates an error if a disallowed value is\n                                specified.\n                              * While dataSource only allows local objects, dataSourceRef allows objects\n                                in any namespaces.\n                              (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                              (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: |-\n                                  Namespace is the namespace of resource being referenced\n                                  Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                  (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: |-\n                              resources represents the minimum resources the volume should have.\n                              Users are allowed to specify resource requirements\n                              that are lower than previous value but must still be higher than capacity recorded in the\n                              status field of the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                            properties:\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Limits describes the maximum amount of compute resources allowed.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Requests describes the minimum amount of compute resources required.\n                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: |-\n                                    A label selector requirement is a selector that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: |-\n                                        operator represents a key's relationship to a set of values.\n                                        Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: |-\n                                        values is an array of string values. If the operator is In or NotIn,\n                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                        the values array must be empty. This array is replaced during a strategic\n                                        merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: |-\n                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                  map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                  operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: |-\n                              storageClassName is the name of the StorageClass required by the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                            type: string\n                          volumeAttributesClassName:\n                            description: |-\n                              volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                              If specified, the CSI driver will create or update the volume with the attributes defined\n                              in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                              it can be changed after the claim is created. An empty string or nil value indicates that no\n                              VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                              this field can be reset to its previous value (including nil) to cancel the modification.\n                              If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                              set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                              exists.\n                              More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                            type: string\n                          volumeMode:\n                            description: |-\n                              volumeMode defines what type of volume is required by the claim.\n                              Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: 'status is deprecated: this field is never set.'\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the actual access modes the volume backing the PVC has.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          allocatedResourceStatuses:\n                            additionalProperties:\n                              description: |-\n                                When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\n                                that it does not recognizes, then it should ignore that update and let other controllers\n                                handle it.\n                              type: string\n                            description: \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                            x-kubernetes-map-type: granular\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: |-\n                              conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'Resizing'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: |-\n                                    reason is a unique, this should be a short, machine understandable string that gives the reason\n                                    for condition's last transition. If it reports \"Resizing\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  description: |-\n                                    Status is the status of the condition.\n                                    Can be True, False, Unknown.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required\n                                  type: string\n                                type:\n                                  description: |-\n                                    Type is the type of the condition.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                            x-kubernetes-list-map-keys:\n                            - type\n                            x-kubernetes-list-type: map\n                          currentVolumeAttributesClassName:\n                            description: |-\n                              currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\n                              When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\n                            type: string\n                          modifyVolumeStatus:\n                            description: |-\n                              ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\n                              When this is unset, there is no ModifyVolume operation being attempted.\n                            properties:\n                              status:\n                                description: \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n   Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n   the specified VolumeAttributesClass not existing.\\n - InProgress\\n   InProgress indicates that the volume is being modified.\\n - Infeasible\\n  Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t  resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\"\n                                type: string\n                              targetVolumeAttributesClassName:\n                                description: targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\n                                type: string\n                            required:\n                            - status\n                            type: object\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: |-\n                  tag of Alertmanager container image to be deployed. Defaults to the value of `version`.\n                  Version is ignored if Tag is set.\n                  Deprecated: use 'image' instead. The image tag can be specified as part of the image URL.\n                type: string\n              terminationGracePeriodSeconds:\n                description: |-\n                  terminationGracePeriodSeconds defines the Optional duration in seconds the pod needs to terminate gracefully.\n                  Value must be non-negative integer. The value zero indicates stop immediately via\n                  the kill signal (no opportunity to shut down) which may lead to data corruption.\n\n                  Defaults to 120 seconds.\n                format: int64\n                minimum: 0\n                type: integer\n              tolerations:\n                description: tolerations defines the pod's tolerations.\n                items:\n                  description: |-\n                    The pod this Toleration is attached to tolerates any taint that matches\n                    the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: |-\n                        Effect indicates the taint effect to match. Empty means match all taint effects.\n                        When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: |-\n                        Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                        If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: |-\n                        Operator represents a key's relationship to the value.\n                        Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod can\n                        tolerate all taints of a particular category.\n                        Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).\n                      type: string\n                    tolerationSeconds:\n                      description: |-\n                        TolerationSeconds represents the period of time the toleration (which must be\n                        of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                        it is not set, which means tolerate the taint forever (do not evict). Zero and\n                        negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: |-\n                        Value is the taint value the toleration matches to.\n                        If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: topologySpreadConstraints defines the Pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: |-\n                        LabelSelector is used to find matching pods.\n                        Pods that match this label selector are counted to determine the number of pods\n                        in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: |-\n                              A label selector requirement is a selector that contains values, a key, and an operator that\n                              relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: |-\n                                  operator represents a key's relationship to a set of values.\n                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: |-\n                                  values is an array of string values. If the operator is In or NotIn,\n                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                  the values array must be empty. This array is replaced during a strategic\n                                  merge patch.\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: |-\n                        MatchLabelKeys is a set of pod label keys to select the pods over which\n                        spreading will be calculated. The keys are used to lookup values from the\n                        incoming pod labels, those key-value labels are ANDed with labelSelector\n                        to select the group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\n                        MatchLabelKeys cannot be set when LabelSelector isn't set.\n                        Keys that don't exist in the incoming pod labels will\n                        be ignored. A null or empty list means only match against labelSelector.\n\n                        This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: |-\n                        MaxSkew describes the degree to which pods may be unevenly distributed.\n                        When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\n                        between the number of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods in an eligible domain\n                        or zero if the number of eligible domains is less than MinDomains.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 2/2/1:\n                        In this case, the global minimum is 1.\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |   P   |\n                        - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\n                        scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\n                        violate MaxSkew(1).\n                        - if MaxSkew is 2, incoming pod can be scheduled onto any zone.\n                        When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\n                        to topologies that satisfy it.\n                        It's a required field. Default value is 1 and 0 is not allowed.\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: |-\n                        MinDomains indicates a minimum number of eligible domains.\n                        When the number of eligible domains with matching topology keys is less than minDomains,\n                        Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed.\n                        And when the number of eligible domains with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling.\n                        As a result, when the number of eligible domains is less than minDomains,\n                        scheduler won't schedule more than maxSkew Pods to those domains.\n                        If value is nil, the constraint behaves as if MinDomains is equal to 1.\n                        Valid values are integers greater than 0.\n                        When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\n                        For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\n                        labelSelector spread as 2/2/2:\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0.\n                        In this situation, new pod with the same labelSelector cannot be scheduled,\n                        because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\n                        it will violate MaxSkew.\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: |-\n                        NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\n                        when calculating pod topology spread skew. Options are:\n                        - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\n                        - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\n                        If this value is nil, the behavior is equivalent to the Honor policy.\n                      type: string\n                    nodeTaintsPolicy:\n                      description: |-\n                        NodeTaintsPolicy indicates how we will treat node taints when calculating\n                        pod topology spread skew. Options are:\n                        - Honor: nodes without taints, along with tainted nodes for which the incoming pod\n                        has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n\n                        If this value is nil, the behavior is equivalent to the Ignore policy.\n                      type: string\n                    topologyKey:\n                      description: |-\n                        TopologyKey is the key of node labels. Nodes that have a label with this key\n                        and identical values are considered to be in the same topology.\n                        We consider each <key, value> as a \"bucket\", and try to put balanced number\n                        of pods into each bucket.\n                        We define a domain as a particular instance of a topology.\n                        Also, we define an eligible domain as a domain whose nodes meet the requirements of\n                        nodeAffinityPolicy and nodeTaintsPolicy.\n                        e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology.\n                        And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology.\n                        It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: |-\n                        WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\n                        the spread constraint.\n                        - DoNotSchedule (default) tells the scheduler not to schedule it.\n                        - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n                          but giving higher precedence to topologies that would help reduce the\n                          skew.\n                        A constraint is considered \"Unsatisfiable\" for an incoming pod\n                        if and only if every possible node assignment for that pod would violate\n                        \"MaxSkew\" on some topology.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 3/1/1:\n                        | zone1 | zone2 | zone3 |\n                        | P P P |   P   |   P   |\n                        If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\n                        to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\n                        MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\n                        won't make it *more* imbalanced.\n                        It's a required field.\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              updateStrategy:\n                description: |-\n                  updateStrategy indicates the strategy that will be employed to update\n                  Pods in the StatefulSet when a revision is made to statefulset's Pod\n                  Template.\n\n                  The default strategy is RollingUpdate.\n                properties:\n                  rollingUpdate:\n                    description: rollingUpdate is used to communicate parameters when type is RollingUpdate.\n                    properties:\n                      maxUnavailable:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          maxUnavailable is the maximum number of pods that can be unavailable\n                          during the update. The value can be an absolute number (ex: 5) or a\n                          percentage of desired pods (ex: 10%). Absolute number is calculated from\n                          percentage by rounding up. This can not be 0.  Defaults to 1. This field\n                          is alpha-level and is only honored by servers that enable the\n                          MaxUnavailableStatefulSet feature. The field applies to all pods in the\n                          range 0 to Replicas-1.  That means if there is any unavailable pod in\n                          the range 0 to Replicas-1, it will be counted towards MaxUnavailable.\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  type:\n                    description: |-\n                      type indicates the type of the StatefulSetUpdateStrategy.\n\n                      Default is RollingUpdate.\n                    enum:\n                    - OnDelete\n                    - RollingUpdate\n                    type: string\n                required:\n                - type\n                type: object\n                x-kubernetes-validations:\n                - message: rollingUpdate requires type to be RollingUpdate\n                  rule: '!(self.type != ''RollingUpdate'' && has(self.rollingUpdate))'\n              version:\n                description: version the cluster should be on.\n                type: string\n              volumeMounts:\n                description: |-\n                  volumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition.\n                  VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container,\n                  that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: |-\n                        Path within the container at which the volume should be mounted.  Must\n                        not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: |-\n                        mountPropagation determines how mounts are propagated from the host\n                        to container and the other way around.\n                        When not set, MountPropagationNone is used.\n                        This field is beta in 1.10.\n                        When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                        (which defaults to None).\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: |-\n                        Mounted read-only if true, read-write otherwise (false or unspecified).\n                        Defaults to false.\n                      type: boolean\n                    recursiveReadOnly:\n                      description: |-\n                        RecursiveReadOnly specifies whether read-only mounts should be handled\n                        recursively.\n\n                        If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                        If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                        recursively read-only.  If this field is set to IfPossible, the mount is made\n                        recursively read-only, if it is supported by the container runtime.  If this\n                        field is set to Enabled, the mount is made recursively read-only if it is\n                        supported by the container runtime, otherwise the pod will not be started and\n                        an error will be generated to indicate the reason.\n\n                        If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                        None (or be unspecified, which defaults to None).\n\n                        If this field is not specified, it is treated as an equivalent of Disabled.\n                      type: string\n                    subPath:\n                      description: |-\n                        Path within the volume from which the container's volume should be mounted.\n                        Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: |-\n                        Expanded path within the volume from which the container's volume should be mounted.\n                        Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                        Defaults to \"\" (volume's root).\n                        SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: |-\n                  volumes allows configuration of additional volumes on the output StatefulSet definition.\n                  Volumes specified will be appended to other volumes that are generated as a result of\n                  StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: |-\n                        awsElasticBlockStore represents an AWS Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree\n                        awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly value true will force the readOnly setting in VolumeMounts.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: boolean\n                        volumeID:\n                          description: |-\n                            volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: |-\n                        azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                        Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type\n                        are redirected to the disk.csi.azure.com CSI driver.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          default: ext4\n                          description: |-\n                            fsType is Filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          default: false\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: |-\n                        azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                        Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type\n                        are redirected to the file.csi.azure.com CSI driver.\n                      properties:\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: |-\n                        cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.\n                        Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.\n                      properties:\n                        monitors:\n                          description: |-\n                            monitors is Required: Monitors is a collection of Ceph monitors\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: boolean\n                        secretFile:\n                          description: |-\n                            secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: |-\n                            user is optional: User is the rados user name, default is admin\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: |-\n                        cinder represents a cinder volume attached and mounted on kubelets host machine.\n                        Deprecated: Cinder is deprecated. All operations for the in-tree cinder type\n                        are redirected to the cinder.csi.openstack.org CSI driver.\n                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is optional: points to a secret object containing parameters used to connect\n                            to OpenStack.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: |-\n                            volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items if unspecified, each key-value pair in the Data field of the referenced\n                            ConfigMap will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the ConfigMap,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers.\n                      properties:\n                        driver:\n                          description: |-\n                            driver is the name of the CSI driver that handles this volume.\n                            Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated CSI driver\n                            which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: |-\n                            nodePublishSecretRef is a reference to the secret object containing\n                            sensitive information to pass to the CSI driver to complete the CSI\n                            NodePublishVolume and NodeUnpublishVolume calls.\n                            This field is optional, and  may be empty if no secret is required. If the\n                            secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly specifies a read-only configuration for the volume.\n                            Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            volumeAttributes stores driver-specific properties that are passed to the CSI\n                            driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            Optional: mode bits to use on created files by default. Must be a\n                            Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: |-\n                                  Optional: mode bits used to set permissions on this file, must be an octal value\n                                  between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    emptyDir:\n                      description: |-\n                        emptyDir represents a temporary directory that shares a pod's lifetime.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                      properties:\n                        medium:\n                          description: |-\n                            medium represents what type of storage medium should back this directory.\n                            The default is \"\" which means to use the node's default medium.\n                            Must be an empty string (default) or Memory.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: |-\n                            sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                            The size limit is also applicable for memory medium.\n                            The maximum usage on memory medium EmptyDir would be the minimum value between\n                            the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                            The default is nil which means that the limit is undefined.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: |-\n                        ephemeral represents a volume that is handled by a cluster storage driver.\n                        The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\n                        and deleted when the pod is removed.\n\n                        Use this if:\n                        a) the volume is only needed while the pod runs,\n                        b) features of normal volumes like restoring from snapshot or capacity\n                           tracking are needed,\n                        c) the storage driver is specified through a storage class, and\n                        d) the storage driver supports dynamic volume provisioning through\n                           a PersistentVolumeClaim (see EphemeralVolumeSource for more\n                           information on the connection between this volume type\n                           and PersistentVolumeClaim).\n\n                        Use PersistentVolumeClaim or one of the vendor-specific\n                        APIs for volumes that persist for longer than the lifecycle\n                        of an individual pod.\n\n                        Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to\n                        be used that way - see the documentation of the driver for\n                        more information.\n\n                        A pod can use both types of ephemeral volumes and\n                        persistent volumes at the same time.\n                      properties:\n                        volumeClaimTemplate:\n                          description: |-\n                            Will be used to create a stand-alone PVC to provision the volume.\n                            The pod in which this EphemeralVolumeSource is embedded will be the\n                            owner of the PVC, i.e. the PVC will be deleted together with the\n                            pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                            `<volume name>` is the name from the `PodSpec.Volumes` array\n                            entry. Pod validation will reject the pod if the concatenated name\n                            is not valid for a PVC (for example, too long).\n\n                            An existing PVC with that name that is not owned by the pod\n                            will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC is\n                            meant to be used by the pod, the PVC has to updated with an\n                            owner reference to the pod once the pod exists. Normally\n                            this should not be necessary, but it may be useful when\n                            manually reconstructing a broken cluster.\n\n                            This field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created.\n\n                            Required, must not be nil.\n                          properties:\n                            metadata:\n                              description: |-\n                                May contain labels and annotations that will be copied into the PVC\n                                when creating it. No other fields are allowed and will be rejected during\n                                validation.\n                              type: object\n                            spec:\n                              description: |-\n                                The specification for the PersistentVolumeClaim. The entire content is\n                                copied unchanged into the PVC that gets created from this\n                                template. The same fields as in a PersistentVolumeClaim\n                                are also valid here.\n                              properties:\n                                accessModes:\n                                  description: |-\n                                    accessModes contains the desired access modes the volume should have.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                dataSource:\n                                  description: |-\n                                    dataSource field can be used to specify either:\n                                    * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim)\n                                    If the provisioner or an external controller can support the specified data source,\n                                    it will create a new volume based on the contents of the specified data source.\n                                    When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                    and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                    If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: |-\n                                    dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                    volume is desired. This may be any object from a non-empty API group (non\n                                    core object) or a PersistentVolumeClaim object.\n                                    When this field is specified, volume binding will only succeed if the type of\n                                    the specified object matches some installed volume populator or dynamic\n                                    provisioner.\n                                    This field will replace the functionality of the dataSource field and as such\n                                    if both fields are non-empty, they must have the same value. For backwards\n                                    compatibility, when namespace isn't specified in dataSourceRef,\n                                    both fields (dataSource and dataSourceRef) will be set to the same\n                                    value automatically if one of them is empty and the other is non-empty.\n                                    When namespace is specified in dataSourceRef,\n                                    dataSource isn't set to the same value and must be empty.\n                                    There are three important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types of objects, dataSourceRef\n                                      allows any non-core object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                      preserves all values, and generates an error if a disallowed value is\n                                      specified.\n                                    * While dataSource only allows local objects, dataSourceRef allows objects\n                                      in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                    (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: |-\n                                        Namespace is the namespace of resource being referenced\n                                        Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                        (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: |-\n                                    resources represents the minimum resources the volume should have.\n                                    Users are allowed to specify resource requirements\n                                    that are lower than previous value but must still be higher than capacity recorded in the\n                                    status field of the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                  properties:\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Limits describes the maximum amount of compute resources allowed.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Requests describes the minimum amount of compute resources required.\n                                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                        otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: |-\n                                    storageClassName is the name of the StorageClass required by the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                  type: string\n                                volumeAttributesClassName:\n                                  description: |-\n                                    volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                    If specified, the CSI driver will create or update the volume with the attributes defined\n                                    in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                    it can be changed after the claim is created. An empty string or nil value indicates that no\n                                    VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                    this field can be reset to its previous value (including nil) to cancel the modification.\n                                    If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                    set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                    exists.\n                                    More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                  type: string\n                                volumeMode:\n                                  description: |-\n                                    volumeMode defines what type of volume is required by the claim.\n                                    Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        wwids:\n                          description: |-\n                            wwids Optional: FC volume world wide identifiers (wwids)\n                            Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    flexVolume:\n                      description: |-\n                        flexVolume represents a generic volume resource that is\n                        provisioned/attached using an exec based plugin.\n                        Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: secretRef is reference to the secret object containing\n                            sensitive information to pass to the plugin scripts. This may be\n                            empty if no secret object is specified. If the secret object\n                            contains more than one secret, all secrets are passed to the plugin\n                            scripts.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: |-\n                        flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.\n                        Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.\n                      properties:\n                        datasetName:\n                          description: |-\n                            datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker\n                            should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: |-\n                        gcePersistentDisk represents a GCE Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree\n                        gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: |-\n                            pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: |-\n                        gitRepo represents a git repository at a particular revision.\n                        Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an\n                        EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\n                        into the Pod's container.\n                      properties:\n                        directory:\n                          description: |-\n                            directory is the target directory name.\n                            Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the\n                            git repository.  Otherwise, if specified, the volume will contain the git repository in\n                            the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: |-\n                        glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\n                        Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.\n                      properties:\n                        endpoints:\n                          description: endpoints is the endpoint name that details Glusterfs topology.\n                          type: string\n                        path:\n                          description: |-\n                            path is the Glusterfs volume path.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: |-\n                        hostPath represents a pre-existing file or directory on the host\n                        machine that is directly exposed to the container. This is generally\n                        used for system agents or other privileged things that are allowed\n                        to see the host machine. Most containers will NOT need this.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                      properties:\n                        path:\n                          description: |-\n                            path of the directory on the host.\n                            If the path is a symlink, it will follow the link to the real path.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                        type:\n                          description: |-\n                            type for HostPath Volume\n                            Defaults to \"\"\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    image:\n                      description: |-\n                        image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.\n                        The volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n                        - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                        - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                        - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\n                        The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.\n                        A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.\n                        The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.\n                        The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.\n                        The volume will be mounted read-only (ro) and non-executable files (noexec).\n                        Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.\n                        The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.\n                      properties:\n                        pullPolicy:\n                          description: |-\n                            Policy for pulling OCI objects. Possible values are:\n                            Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                            Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                            IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n                            Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                          type: string\n                        reference:\n                          description: |-\n                            Required: Image or artifact reference to be used.\n                            Behaves in the same way as pod.spec.containers[*].image.\n                            Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.\n                            More info: https://kubernetes.io/docs/concepts/containers/images\n                            This field is optional to allow higher level config management to default or override\n                            container images in workload controllers like Deployments and StatefulSets.\n                          type: string\n                      type: object\n                    iscsi:\n                      description: |-\n                        iscsi represents an ISCSI Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                          type: string\n                        initiatorName:\n                          description: |-\n                            initiatorName is the custom iSCSI Initiator Name.\n                            If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n                            <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          default: default\n                          description: |-\n                            iscsiInterface is the interface Name that uses an iSCSI transport.\n                            Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: |-\n                            portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: |-\n                            targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: |-\n                        name of the volume.\n                        Must be a DNS_LABEL and unique within the pod.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                    nfs:\n                      description: |-\n                        nfs represents an NFS mount on the host that shares a pod's lifetime\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                      properties:\n                        path:\n                          description: |-\n                            path that is exported by the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the NFS export to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: boolean\n                        server:\n                          description: |-\n                            server is the hostname or IP address of the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: |-\n                        persistentVolumeClaimVolumeSource represents a reference to a\n                        PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                      properties:\n                        claimName:\n                          description: |-\n                            claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\n                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Will force the ReadOnly setting in VolumeMounts.\n                            Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: |-\n                        photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.\n                        Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: |-\n                        portworxVolume represents a portworx volume attached and mounted on kubelets host machine.\n                        Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type\n                        are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate\n                        is on.\n                      properties:\n                        fsType:\n                          description: |-\n                            fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode are the mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: |-\n                            sources is the list of volume projections. Each entry in this list\n                            handles one source.\n                          items:\n                            description: |-\n                              Projection that may be projected along with other supported volume types.\n                              Exactly one of these fields must be set.\n                            properties:\n                              clusterTrustBundle:\n                                description: |-\n                                  ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\n                                  of ClusterTrustBundle objects in an auto-updating file.\n\n                                  Alpha, gated by the ClusterTrustBundleProjection feature gate.\n\n                                  ClusterTrustBundle objects can either be selected by name, or by the\n                                  combination of signer name and a label selector.\n\n                                  Kubelet performs aggressive normalization of the PEM contents written\n                                  into the pod filesystem.  Esoteric PEM features such as inter-block\n                                  comments and block headers are stripped.  Certificates are deduplicated.\n                                  The ordering of certificates within the file is arbitrary, and Kubelet\n                                  may change the order over time.\n                                properties:\n                                  labelSelector:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this label selector.  Only has\n                                      effect if signerName is set.  Mutually-exclusive with name.  If unset,\n                                      interpreted as \"match nothing\".  If set but empty, interpreted as \"match\n                                      everything\".\n                                    properties:\n                                      matchExpressions:\n                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                        items:\n                                          description: |-\n                                            A label selector requirement is a selector that contains values, a key, and an operator that\n                                            relates the key and values.\n                                          properties:\n                                            key:\n                                              description: key is the label key that the selector applies to.\n                                              type: string\n                                            operator:\n                                              description: |-\n                                                operator represents a key's relationship to a set of values.\n                                                Valid operators are In, NotIn, Exists and DoesNotExist.\n                                              type: string\n                                            values:\n                                              description: |-\n                                                values is an array of string values. If the operator is In or NotIn,\n                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                the values array must be empty. This array is replaced during a strategic\n                                                merge patch.\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        description: |-\n                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                          map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                          operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  name:\n                                    description: |-\n                                      Select a single ClusterTrustBundle by object name.  Mutually-exclusive\n                                      with signerName and labelSelector.\n                                    type: string\n                                  optional:\n                                    description: |-\n                                      If true, don't block pod startup if the referenced ClusterTrustBundle(s)\n                                      aren't available.  If using name, then the named ClusterTrustBundle is\n                                      allowed not to exist.  If using signerName, then the combination of\n                                      signerName and labelSelector is allowed to match zero\n                                      ClusterTrustBundles.\n                                    type: boolean\n                                  path:\n                                    description: Relative path from the volume root to write the bundle.\n                                    type: string\n                                  signerName:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this signer name.\n                                      Mutually-exclusive with name.  The contents of all selected\n                                      ClusterTrustBundles will be unified and deduplicated.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      ConfigMap will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the ConfigMap,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: |-\n                                            Optional: mode bits used to set permissions on this file, must be an octal value\n                                            between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: |-\n                                            Selects a resource of the container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                type: object\n                              podCertificate:\n                                description: |-\n                                  Projects an auto-rotating credential bundle (private key and certificate\n                                  chain) that the pod can use either as a TLS client or server.\n\n                                  Kubelet generates a private key and uses it to send a\n                                  PodCertificateRequest to the named signer.  Once the signer approves the\n                                  request and issues a certificate chain, Kubelet writes the key and\n                                  certificate chain to the pod filesystem.  The pod does not start until\n                                  certificates have been issued for each podCertificate projected volume\n                                  source in its spec.\n\n                                  Kubelet will begin trying to rotate the certificate at the time indicated\n                                  by the signer using the PodCertificateRequest.Status.BeginRefreshAt\n                                  timestamp.\n\n                                  Kubelet can write a single file, indicated by the credentialBundlePath\n                                  field, or separate files, indicated by the keyPath and\n                                  certificateChainPath fields.\n\n                                  The credential bundle is a single file in PEM format.  The first PEM\n                                  entry is the private key (in PKCS#8 format), and the remaining PEM\n                                  entries are the certificate chain issued by the signer (typically,\n                                  signers will return their certificate chain in leaf-to-root order).\n\n                                  Prefer using the credential bundle format, since your application code\n                                  can read it atomically.  If you use keyPath and certificateChainPath,\n                                  your application must make two separate file reads. If these coincide\n                                  with a certificate rotation, it is possible that the private key and leaf\n                                  certificate you read may not correspond to each other.  Your application\n                                  will need to check for this condition, and re-read until they are\n                                  consistent.\n\n                                  The named signer controls chooses the format of the certificate it\n                                  issues; consult the signer implementation's documentation to learn how to\n                                  use the certificates it issues.\n                                properties:\n                                  certificateChainPath:\n                                    description: |-\n                                      Write the certificate chain at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  credentialBundlePath:\n                                    description: |-\n                                      Write the credential bundle at this path in the projected volume.\n\n                                      The credential bundle is a single file that contains multiple PEM blocks.\n                                      The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private\n                                      key.\n\n                                      The remaining blocks are CERTIFICATE blocks, containing the issued\n                                      certificate chain from the signer (leaf and any intermediates).\n\n                                      Using credentialBundlePath lets your Pod's application code make a single\n                                      atomic read that retrieves a consistent key and certificate chain.  If you\n                                      project them to separate files, your application code will need to\n                                      additionally check that the leaf certificate was issued to the key.\n                                    type: string\n                                  keyPath:\n                                    description: |-\n                                      Write the key at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  keyType:\n                                    description: |-\n                                      The type of keypair Kubelet will generate for the pod.\n\n                                      Valid values are \"RSA3072\", \"RSA4096\", \"ECDSAP256\", \"ECDSAP384\",\n                                      \"ECDSAP521\", and \"ED25519\".\n                                    type: string\n                                  maxExpirationSeconds:\n                                    description: |-\n                                      maxExpirationSeconds is the maximum lifetime permitted for the\n                                      certificate.\n\n                                      Kubelet copies this value verbatim into the PodCertificateRequests it\n                                      generates for this projection.\n\n                                      If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver\n                                      will reject values shorter than 3600 (1 hour).  The maximum allowable\n                                      value is 7862400 (91 days).\n\n                                      The signer implementation is then free to issue a certificate with any\n                                      lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600\n                                      seconds (1 hour).  This constraint is enforced by kube-apiserver.\n                                      `kubernetes.io` signers will never issue certificates with a lifetime\n                                      longer than 24 hours.\n                                    format: int32\n                                    type: integer\n                                  signerName:\n                                    description: Kubelet's generated CSRs will be addressed to this signer.\n                                    type: string\n                                  userAnnotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      userAnnotations allow pod authors to pass additional information to\n                                      the signer implementation.  Kubernetes does not restrict or validate this\n                                      metadata in any way.\n\n                                      These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of\n                                      the PodCertificateRequest objects that Kubelet creates.\n\n                                      Entries are subject to the same validation as object metadata annotations,\n                                      with the addition that all keys must be domain-prefixed. No restrictions\n                                      are placed on values, except an overall size limitation on the entire field.\n\n                                      Signers should document the keys and values they support. Signers should\n                                      deny requests that contain keys they do not recognize.\n                                    type: object\n                                required:\n                                - keyType\n                                - signerName\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      Secret will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the Secret,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: |-\n                                      audience is the intended audience of the token. A recipient of a token\n                                      must identify itself with an identifier specified in the audience of the\n                                      token, and otherwise should reject the token. The audience defaults to the\n                                      identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: |-\n                                      expirationSeconds is the requested duration of validity of the service\n                                      account token. As the token approaches expiration, the kubelet volume\n                                      plugin will proactively rotate the service account token. The kubelet will\n                                      start trying to rotate the token if the token is older than 80 percent of\n                                      its time to live or if the token is older than 24 hours.Defaults to 1 hour\n                                      and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: |-\n                                      path is the path relative to the mount point of the file to project the\n                                      token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    quobyte:\n                      description: |-\n                        quobyte represents a Quobyte mount on the host that shares a pod's lifetime.\n                        Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.\n                      properties:\n                        group:\n                          description: |-\n                            group to map volume access to\n                            Default is no group\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Quobyte volume to be mounted with read-only permissions.\n                            Defaults to false.\n                          type: boolean\n                        registry:\n                          description: |-\n                            registry represents a single or multiple Quobyte Registry services\n                            specified as a string as host:port pair (multiple entries are separated with commas)\n                            which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: |-\n                            tenant owning the given Quobyte volume in the Backend\n                            Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: |-\n                            user to map volume access to\n                            Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: |-\n                        rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\n                        Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                          type: string\n                        image:\n                          description: |-\n                            image is the rados image name.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        keyring:\n                          default: /etc/ceph/keyring\n                          description: |-\n                            keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        monitors:\n                          description: |-\n                            monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        pool:\n                          default: rbd\n                          description: |-\n                            pool is the rados pool name.\n                            Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is name of the authentication secret for RBDUser. If provided\n                            overrides keyring.\n                            Default is nil.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          default: admin\n                          description: |-\n                            user is the rados user name.\n                            Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: |-\n                        scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                        Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.\n                      properties:\n                        fsType:\n                          default: xfs\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef references to the secret for ScaleIO user and other\n                            sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          default: ThinProvisioned\n                          description: |-\n                            storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: |-\n                            volumeName is the name of a volume already created in the ScaleIO system\n                            that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: |-\n                        secret represents a secret that should populate this volume.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values\n                            for mode bits. Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items If unspecified, each key-value pair in the Data field of the referenced\n                            Secret will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the Secret,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: |-\n                            secretName is the name of the secret in the pod's namespace to use.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                          type: string\n                      type: object\n                    storageos:\n                      description: |-\n                        storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                        Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef specifies the secret to use for obtaining the StorageOS API\n                            credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: |-\n                            volumeName is the human-readable name of the StorageOS volume.  Volume\n                            names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: |-\n                            volumeNamespace specifies the scope of the volume within StorageOS.  If no\n                            namespace is specified then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS for tighter integration.\n                            Set VolumeName to any name to override the default behaviour.\n                            Set to \"default\" if you are not using namespaces within StorageOS.\n                            Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: |-\n                        vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.\n                        Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type\n                        are redirected to the csi.vsphere.vmware.com CSI driver.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              web:\n                description: web defines the web command line flags when starting Alertmanager.\n                properties:\n                  getConcurrency:\n                    description: |-\n                      getConcurrency defines the maximum number of GET requests processed concurrently. This corresponds to the\n                      Alertmanager's `--web.get-concurrency` flag.\n                    format: int32\n                    type: integer\n                  httpConfig:\n                    description: httpConfig defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: headers defines a list of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: |-\n                              contentSecurityPolicy defines the Content-Security-Policy header to HTTP responses.\n                              Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: |-\n                              strictTransportSecurity defines the Strict-Transport-Security header to HTTP responses.\n                              Unset if blank.\n                              Please make sure that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications hosted on the same\n                              domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: |-\n                              xContentTypeOptions defines the X-Content-Type-Options header to HTTP responses.\n                              Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: |-\n                              xFrameOptions defines the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: |-\n                              xXSSProtection defines the X-XSS-Protection header to all responses.\n                              Unset if blank.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: |-\n                          http2 enable HTTP/2 support. Note that HTTP/2 is only supported with TLS.\n                          When TLSConfig is not configured, HTTP/2 will be disabled.\n                          Whenever the value of the field changes, a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  timeout:\n                    description: |-\n                      timeout for HTTP requests. This corresponds to the Alertmanager's\n                      `--web.timeout` flag.\n                    format: int32\n                    type: integer\n                  tlsConfig:\n                    description: tlsConfig defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: |-\n                          cert defines the Secret or ConfigMap containing the TLS certificate for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `certFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: |-\n                          certFile defines the path to the TLS certificate file in the container for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `cert`.\n                        type: string\n                      cipherSuites:\n                        description: |-\n                          cipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\n\n                          If not defined, the Go default cipher suites are used.\n                          Available cipher suites are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: |-\n                          client_ca defines the Secret or ConfigMap containing the CA certificate for client certificate\n                          authentication to the server.\n\n                          It is mutually exclusive with `clientCAFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: |-\n                          clientAuthType defines the server policy for client TLS authentication.\n\n                          For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType\n                        type: string\n                      clientCAFile:\n                        description: |-\n                          clientCAFile defines the path to the CA certificate file for client certificate authentication to\n                          the server.\n\n                          It is mutually exclusive with `client_ca`.\n                        type: string\n                      curvePreferences:\n                        description: |-\n                          curvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference\n                          order.\n\n                          Available curves are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#CurveID\n                        items:\n                          type: string\n                        type: array\n                      keyFile:\n                        description: |-\n                          keyFile defines the path to the TLS private key file in the container for the web server.\n\n                          If defined, either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keySecret`.\n                        type: string\n                      keySecret:\n                        description: |-\n                          keySecret defines the secret containing the TLS private key for the web server.\n\n                          Either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keyFile`.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: maxVersion defines the Maximum TLS version that is acceptable.\n                        type: string\n                      minVersion:\n                        description: minVersion defines the minimum TLS version that is acceptable.\n                        type: string\n                      preferServerCipherSuites:\n                        description: |-\n                          preferServerCipherSuites defines whether the server selects the client's most preferred cipher\n                          suite, or the server's most preferred cipher suite.\n\n                          If true then the server's preference, as expressed in\n                          the order of elements in cipherSuites, is used.\n                        type: boolean\n                    type: object\n                type: object\n            type: object\n          status:\n            description: |-\n              status defines the most recent observed status of the Alertmanager cluster. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              availableReplicas:\n                description: |-\n                  availableReplicas defines the total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Alertmanager cluster.\n                format: int32\n                type: integer\n              conditions:\n                description: conditions defines the current state of the Alertmanager object.\n                items:\n                  description: |-\n                    Condition represents the state of the resources associated with the\n                    Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: message defines human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: |-\n                        observedGeneration defines the .metadata.generation that the\n                        condition was set based upon. For instance, if `.metadata.generation` is\n                        currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                        condition is out of date with respect to the current state of the\n                        instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: status of the condition.\n                      minLength: 1\n                      type: string\n                    type:\n                      description: type of the condition being reported.\n                      minLength: 1\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: |-\n                  paused defines whether any actions on the underlying managed objects are\n                  being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: |-\n                  replicas defines the total number of non-terminated pods targeted by this Alertmanager\n                  object (their labels match the selector).\n                format: int32\n                type: integer\n              selector:\n                description: selector used to match the pods targeted by this Alertmanager object.\n                type: string\n              unavailableReplicas:\n                description: unavailableReplicas defines the total number of unavailable pods targeted by this Alertmanager object.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: |-\n                  updatedReplicas defines the total number of non-terminated pods targeted by this Alertmanager\n                  object that have the desired version spec.\n                format: int32\n                type: integer\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      scale:\n        labelSelectorPath: .status.selector\n        specReplicasPath: .spec.replicas\n        statusReplicasPath: .status.replicas\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0podmonitorCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: podmonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PodMonitor\n    listKind: PodMonitorList\n    plural: podmonitors\n    shortNames:\n    - pmon\n    singular: podmonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `PodMonitor` custom resource definition (CRD) defines how `Prometheus` and `PrometheusAgent` can scrape metrics from a group of pods.\n          Among other things, it allows to specify:\n          * The pods to scrape via label selectors.\n          * The container ports to scrape.\n          * Authentication credentials to use.\n          * Target and metric relabeling.\n\n          `Prometheus` and `PrometheusAgent` objects select `PodMonitor` objects using label and namespace selectors.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: spec defines the specification of desired Pod selection for target discovery by Prometheus.\n            properties:\n              attachMetadata:\n                description: |-\n                  attachMetadata defines additional metadata which is added to the\n                  discovered targets.\n\n                  It requires Prometheus >= v2.35.0.\n                properties:\n                  node:\n                    description: |-\n                      node when set to true, Prometheus attaches node metadata to the discovered\n                      targets.\n\n                      The Prometheus service account must have the `list` and `watch`\n                      permissions on the `Nodes` objects.\n                    type: boolean\n                type: object\n              bodySizeLimit:\n                description: |-\n                  bodySizeLimit when defined specifies a job level limit on the size\n                  of uncompressed response body that will be accepted by Prometheus.\n\n                  It requires Prometheus >= v2.28.0.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              convertClassicHistogramsToNHCB:\n                description: |-\n                  convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\n                  It requires Prometheus >= v3.0.0.\n                type: boolean\n              fallbackScrapeProtocol:\n                description: |-\n                  fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\n\n                  It requires Prometheus >= v3.0.0.\n                enum:\n                - PrometheusProto\n                - OpenMetricsText0.0.1\n                - OpenMetricsText1.0.0\n                - PrometheusText0.0.4\n                - PrometheusText1.0.0\n                type: string\n              jobLabel:\n                description: |-\n                  jobLabel defines the label to use to retrieve the job name from.\n                  `jobLabel` selects the label from the associated Kubernetes `Pod`\n                  object which will be used as the `job` label for all metrics.\n\n                  For example if `jobLabel` is set to `foo` and the Kubernetes `Pod`\n                  object is labeled with `foo: bar`, then Prometheus adds the `job=\"bar\"`\n                  label to all ingested metrics.\n\n                  If the value of this field is empty, the `job` label of the metrics\n                  defaults to the namespace and name of the PodMonitor object (e.g. `<namespace>/<name>`).\n                type: string\n              keepDroppedTargets:\n                description: |-\n                  keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\n                  that will be kept in memory. 0 means no limit.\n\n                  It requires Prometheus >= v2.47.0.\n                format: int64\n                type: integer\n              labelLimit:\n                description: |-\n                  labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\n\n                  It requires Prometheus >= v2.27.0.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: |-\n                  labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\n\n                  It requires Prometheus >= v2.27.0.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: |-\n                  labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\n\n                  It requires Prometheus >= v2.27.0.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: |-\n                  namespaceSelector defines in which namespace(s) Prometheus should discover the pods.\n                  By default, the pods are discovered in the same namespace as the `PodMonitor` object but it is possible to select pods across different/all namespaces.\n                properties:\n                  any:\n                    description: |-\n                      any defines the boolean describing whether all namespaces are selected in contrast to a\n                      list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: matchNames defines the list of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              nativeHistogramBucketLimit:\n                description: |-\n                  nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\n                  buckets will be merged to stay within the limit.\n                  It requires Prometheus >= v2.45.0.\n                format: int64\n                type: integer\n              nativeHistogramMinBucketFactor:\n                anyOf:\n                - type: integer\n                - type: string\n                description: |-\n                  nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\n                  buckets will be merged to increase the factor sufficiently.\n                  It requires Prometheus >= v2.50.0.\n                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                x-kubernetes-int-or-string: true\n              podMetricsEndpoints:\n                description: podMetricsEndpoints defines how to scrape metrics from the selected pods.\n                items:\n                  description: |-\n                    PodMetricsEndpoint defines an endpoint serving Prometheus metrics to be scraped by\n                    Prometheus.\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization configures the Authorization header credentials used by\n                        the client.\n\n                        Cannot be set at the same time as `basicAuth`, `bearerTokenSecret` or `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines the Basic Authentication credentials used by the\n                        client.\n\n                        Cannot be set at the same time as `authorization`, `bearerTokenSecret` or `oauth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenSecret:\n                      description: |-\n                        bearerTokenSecret defines a key of a Secret containing the bearer token\n                        used by the client for authentication. The secret needs to be in the\n                        same namespace as the custom resource and readable by the Prometheus\n                        Operator.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth` or `oauth2`.\n\n                        Deprecated: use `authorization` instead.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: enableHttp2 can be used to disable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: |-\n                        filterRunning when true, the pods which are not running (e.g. either in Failed or\n                        Succeeded state) are dropped during the target discovery.\n\n                        If unset, the filtering is enabled.\n\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\n                      type: boolean\n                    followRedirects:\n                      description: |-\n                        followRedirects defines whether the client should follow HTTP 3xx\n                        redirects.\n                      type: boolean\n                    honorLabels:\n                      description: |-\n                        honorLabels when true preserves the metric's labels when they collide\n                        with the target's labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: |-\n                        honorTimestamps defines whether Prometheus preserves the timestamps\n                        when exposed by the target.\n                      type: boolean\n                    interval:\n                      description: |-\n                        interval at which Prometheus scrapes the metrics from the target.\n\n                        If empty, Prometheus uses the global scrape interval.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: |-\n                        metricRelabelings defines the relabeling rules to apply to the\n                        samples before ingestion.\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the OAuth2 settings used by the client.\n\n                        It requires Prometheus >= 2.27.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth` or `bearerTokenSecret`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: params define optional HTTP URL parameters.\n                      type: object\n                    path:\n                      description: |-\n                        path defines the HTTP path from which to scrape for metrics.\n\n                        If empty, Prometheus uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: |-\n                        port defines the `Pod` port name which exposes the endpoint.\n\n                        If the pod doesn't expose a port with the same name, it will result\n                        in no targets being discovered.\n\n                        If a `Pod` has multiple `Port`s with the same name (which is not\n                        recommended), one target instance per unique port number will be\n                        generated.\n\n                        It takes precedence over the `portNumber` and `targetPort` fields.\n                      type: string\n                    portNumber:\n                      description: |-\n                        portNumber defines the `Pod` port number which exposes the endpoint.\n\n                        The `Pod` must declare the specified `Port` in its spec or the\n                        target will be dropped by Prometheus.\n\n                        This cannot be used to enable scraping of an undeclared port.\n                        To scrape targets on a port which isn't exposed, you need to use\n                        relabeling to override the `__address__` label (but beware of\n                        duplicate targets if the `Pod` has other declared ports).\n\n                        In practice Prometheus will select targets for which the\n                        matches the target's __meta_kubernetes_pod_container_port_number.\n                      format: int32\n                      maximum: 65535\n                      minimum: 1\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    relabelings:\n                      description: |-\n                        relabelings defines the relabeling rules to apply the target's\n                        metadata labels.\n\n                        The Operator automatically adds relabelings for a few standard Kubernetes fields.\n\n                        The original scrape job's name is available via the `__tmp_prometheus_job_name` label.\n\n                        More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: scheme defines the HTTP scheme to use for scraping.\n                      enum:\n                      - http\n                      - https\n                      - HTTP\n                      - HTTPS\n                      type: string\n                    scrapeTimeout:\n                      description: |-\n                        scrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.\n\n                        If empty, Prometheus uses the global scrape timeout unless it is less\n                        than the target's scrape interval value in which the latter is used.\n                        The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: |-\n                        targetPort defines the name or number of the target port of the `Pod` object behind the Service, the\n                        port must be specified with container port property.\n\n                        Deprecated: use 'port' or 'portNumber' instead.\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration used by the client.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    trackTimestampsStaleness:\n                      description: |-\n                        trackTimestampsStaleness defines whether Prometheus tracks staleness of\n                        the metrics that have an explicit timestamp present in scraped data.\n                        Has no effect if `honorTimestamps` is false.\n\n                        It requires Prometheus >= v2.48.0.\n                      type: boolean\n                  type: object\n                type: array\n              podTargetLabels:\n                description: |-\n                  podTargetLabels defines the labels which are transferred from the\n                  associated Kubernetes `Pod` object onto the ingested metrics.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: |-\n                  sampleLimit defines a per-scrape limit on the number of scraped samples\n                  that will be accepted.\n                format: int64\n                type: integer\n              scrapeClass:\n                description: scrapeClass defines the scrape class to apply.\n                minLength: 1\n                type: string\n              scrapeClassicHistograms:\n                description: |-\n                  scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\n                  It requires Prometheus >= v2.45.0.\n\n                  Notice: `scrapeClassicHistograms` corresponds to the `always_scrape_classic_histograms` field in the Prometheus configuration.\n                type: boolean\n              scrapeNativeHistograms:\n                description: |-\n                  scrapeNativeHistograms defines whether to enable scraping of native histograms.\n                  It requires Prometheus >= v3.8.0.\n                type: boolean\n              scrapeProtocols:\n                description: |-\n                  scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\n                  protocols supported by Prometheus in order of preference (from most to least preferred).\n\n                  If unset, Prometheus uses its default value.\n\n                  It requires Prometheus >= v2.49.0.\n                items:\n                  description: |-\n                    ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\n                    Supported values are:\n                    * `OpenMetricsText0.0.1`\n                    * `OpenMetricsText1.0.0`\n                    * `PrometheusProto`\n                    * `PrometheusText0.0.4`\n                    * `PrometheusText1.0.0`\n                  enum:\n                  - PrometheusProto\n                  - OpenMetricsText0.0.1\n                  - OpenMetricsText1.0.0\n                  - PrometheusText0.0.4\n                  - PrometheusText1.0.0\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              selector:\n                description: selector defines the label selector to select the Kubernetes `Pod` objects to scrape metrics from.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              selectorMechanism:\n                description: |-\n                  selectorMechanism defines the mechanism used to select the endpoints to scrape.\n                  By default, the selection process relies on relabel configurations to filter the discovered targets.\n                  Alternatively, you can opt in for role selectors, which may offer better efficiency in large clusters.\n                  Which strategy is best for your use case needs to be carefully evaluated.\n\n                  It requires Prometheus >= v2.17.0.\n                enum:\n                - RelabelConfig\n                - RoleSelector\n                type: string\n              targetLimit:\n                description: |-\n                  targetLimit defines a limit on the number of scraped targets that will\n                  be accepted.\n                format: int64\n                type: integer\n            required:\n            - selector\n            type: object\n          status:\n            description: |-\n              status defines the status subresource. It is under active development and is updated only when the\n              \"StatusForConfigurationResources\" feature gate is enabled.\n\n              Most recent observed status of the PodMonitor. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              bindings:\n                description: bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\n                items:\n                  description: WorkloadBinding is a link between a configuration resource and a workload resource.\n                  properties:\n                    conditions:\n                      description: conditions defines the current state of the configuration resource when bound to the referenced Workload object.\n                      items:\n                        description: ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\n                        properties:\n                          lastTransitionTime:\n                            description: lastTransitionTime defines the time of the last update to the current status property.\n                            format: date-time\n                            type: string\n                          message:\n                            description: message defines the human-readable message indicating details for the condition's last transition.\n                            type: string\n                          observedGeneration:\n                            description: |-\n                              observedGeneration defines the .metadata.generation that the\n                              condition was set based upon. For instance, if `.metadata.generation` is\n                              currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                              condition is out of date with respect to the current state of the object.\n                            format: int64\n                            type: integer\n                          reason:\n                            description: reason for the condition's last transition.\n                            type: string\n                          status:\n                            description: status of the condition.\n                            minLength: 1\n                            type: string\n                          type:\n                            description: |-\n                              type of the condition being reported.\n                              Currently, only \"Accepted\" is supported.\n                            enum:\n                            - Accepted\n                            minLength: 1\n                            type: string\n                        required:\n                        - lastTransitionTime\n                        - status\n                        - type\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - type\n                      x-kubernetes-list-type: map\n                    group:\n                      description: group defines the group of the referenced resource.\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name defines the name of the referenced object.\n                      minLength: 1\n                      type: string\n                    namespace:\n                      description: namespace defines the namespace of the referenced object.\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\n                      enum:\n                      - prometheuses\n                      - prometheusagents\n                      - thanosrulers\n                      - alertmanagers\n                      type: string\n                  required:\n                  - group\n                  - name\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - group\n                - resource\n                - name\n                - namespace\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0probeCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: probes.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Probe\n    listKind: ProbeList\n    plural: probes\n    shortNames:\n    - prb\n    singular: probe\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `Probe` custom resource definition (CRD) defines how to scrape metrics from prober exporters such as the [blackbox exporter](https://github.com/prometheus/blackbox_exporter).\n\n          The `Probe` resource needs 2 pieces of information:\n          * The list of probed addresses which can be defined statically or by discovering Kubernetes Ingress objects.\n          * The prober which exposes the availability of probed endpoints (over various protocols such HTTP, TCP, ICMP, ...) as Prometheus metrics.\n\n          `Prometheus` and `PrometheusAgent` objects select `Probe` objects using label and namespace selectors.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: spec defines the specification of desired Ingress selection for target discovery by Prometheus.\n            properties:\n              authorization:\n                description: |-\n                  authorization configures the Authorization header credentials used by\n                  the client.\n\n                  Cannot be set at the same time as `basicAuth`, `bearerTokenSecret` or `oauth2`.\n                properties:\n                  credentials:\n                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: |-\n                      type defines the authentication type. The value is case-insensitive.\n\n                      \"Basic\" is not a supported value.\n\n                      Default: \"Bearer\"\n                    type: string\n                type: object\n              basicAuth:\n                description: |-\n                  basicAuth defines the Basic Authentication credentials used by the\n                  client.\n\n                  Cannot be set at the same time as `authorization`, `bearerTokenSecret` or `oauth2`.\n                properties:\n                  password:\n                    description: |-\n                      password defines a key of a Secret containing the password for\n                      authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: |-\n                      username defines a key of a Secret containing the username for\n                      authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              bearerTokenSecret:\n                description: |-\n                  bearerTokenSecret defines a key of a Secret containing the bearer token\n                  used by the client for authentication. The secret needs to be in the\n                  same namespace as the custom resource and readable by the Prometheus\n                  Operator.\n\n                  Cannot be set at the same time as `authorization`, `basicAuth` or `oauth2`.\n\n                  Deprecated: use `authorization` instead.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              convertClassicHistogramsToNHCB:\n                description: |-\n                  convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\n                  It requires Prometheus >= v3.0.0.\n                type: boolean\n              enableHttp2:\n                description: enableHttp2 can be used to disable HTTP2.\n                type: boolean\n              fallbackScrapeProtocol:\n                description: |-\n                  fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\n\n                  It requires Prometheus >= v3.0.0.\n                enum:\n                - PrometheusProto\n                - OpenMetricsText0.0.1\n                - OpenMetricsText1.0.0\n                - PrometheusText0.0.4\n                - PrometheusText1.0.0\n                type: string\n              followRedirects:\n                description: |-\n                  followRedirects defines whether the client should follow HTTP 3xx\n                  redirects.\n                type: boolean\n              interval:\n                description: |-\n                  interval at which targets are probed using the configured prober.\n                  If not specified Prometheus' global scrape interval is used.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              jobName:\n                description: jobName assigned to scraped metrics by default.\n                type: string\n              keepDroppedTargets:\n                description: |-\n                  keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\n                  that will be kept in memory. 0 means no limit.\n\n                  It requires Prometheus >= v2.47.0.\n                format: int64\n                type: integer\n              labelLimit:\n                description: |-\n                  labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: |-\n                  labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: |-\n                  labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              metricRelabelings:\n                description: metricRelabelings defines the RelabelConfig to apply to samples before ingestion.\n                items:\n                  description: |-\n                    RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                    scraped samples and remote write samples.\n\n                    More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                  properties:\n                    action:\n                      default: replace\n                      description: |-\n                        action to perform based on the regex matching.\n\n                        `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                        `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                        Default: \"Replace\"\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: |-\n                        modulus to take of the hash of the source label values.\n\n                        Only applicable when the action is `HashMod`.\n                      format: int64\n                      type: integer\n                    regex:\n                      description: regex defines the regular expression against which the extracted value is matched.\n                      type: string\n                    replacement:\n                      description: |-\n                        replacement value against which a Replace action is performed if the\n                        regular expression matches.\n\n                        Regex capture groups are available.\n                      type: string\n                    separator:\n                      description: separator defines the string between concatenated SourceLabels.\n                      type: string\n                    sourceLabels:\n                      description: |-\n                        sourceLabels defines the source labels select values from existing labels. Their content is\n                        concatenated using the configured Separator and matched against the\n                        configured regular expression.\n                      items:\n                        description: |-\n                          LabelName is a valid Prometheus label name.\n                          For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                          For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: |-\n                        targetLabel defines the label to which the resulting string is written in a replacement.\n\n                        It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                        `KeepEqual` and `DropEqual` actions.\n\n                        Regex capture groups are available.\n                      type: string\n                  type: object\n                type: array\n              module:\n                description: |-\n                  module to use for probing specifying how to probe the target.\n                  Example module configuring in the blackbox exporter:\n                  https://github.com/prometheus/blackbox_exporter/blob/master/example.yml\n                type: string\n              nativeHistogramBucketLimit:\n                description: |-\n                  nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\n                  buckets will be merged to stay within the limit.\n                  It requires Prometheus >= v2.45.0.\n                format: int64\n                type: integer\n              nativeHistogramMinBucketFactor:\n                anyOf:\n                - type: integer\n                - type: string\n                description: |-\n                  nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\n                  buckets will be merged to increase the factor sufficiently.\n                  It requires Prometheus >= v2.50.0.\n                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                x-kubernetes-int-or-string: true\n              oauth2:\n                description: |-\n                  oauth2 defines the OAuth2 settings used by the client.\n\n                  It requires Prometheus >= 2.27.0.\n\n                  Cannot be set at the same time as `authorization`, `basicAuth` or `bearerTokenSecret`.\n                properties:\n                  clientId:\n                    description: |-\n                      clientId defines a key of a Secret or ConfigMap containing the\n                      OAuth2 client's ID.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  clientSecret:\n                    description: |-\n                      clientSecret defines a key of a Secret containing the OAuth2\n                      client's secret.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  endpointParams:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      endpointParams configures the HTTP parameters to append to the token\n                      URL.\n                    type: object\n                  noProxy:\n                    description: |-\n                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                      that should be excluded from proxying. IP and domain names can\n                      contain port numbers.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: string\n                  proxyConnectHeader:\n                    additionalProperties:\n                      items:\n                        description: SecretKeySelector selects a key of a Secret.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      type: array\n                    description: |-\n                      proxyConnectHeader optionally specifies headers to send to\n                      proxies during CONNECT requests.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  proxyFromEnvironment:\n                    description: |-\n                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: boolean\n                  proxyUrl:\n                    description: proxyUrl defines the HTTP proxy server to use.\n                    pattern: ^(http|https|socks5)://.+$\n                    type: string\n                  scopes:\n                    description: scopes defines the OAuth2 scopes used for the token request.\n                    items:\n                      type: string\n                    type: array\n                  tlsConfig:\n                    description: |-\n                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                      It requires Prometheus >= v2.43.0.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                  tokenUrl:\n                    description: tokenUrl defines the URL to fetch the token from.\n                    minLength: 1\n                    type: string\n                required:\n                - clientId\n                - clientSecret\n                - tokenUrl\n                type: object\n              params:\n                description: |-\n                  params defines the list of HTTP query parameters for the scrape.\n                  Please note that the `.spec.module` field takes precedence over the `module` parameter from this list when both are defined.\n                  The module name must be added using Module under ProbeSpec.\n                items:\n                  description: ProbeParam defines specification of extra parameters for a Probe.\n                  properties:\n                    name:\n                      description: name defines the parameter name\n                      minLength: 1\n                      type: string\n                    values:\n                      description: values defines the parameter values\n                      items:\n                        minLength: 1\n                        type: string\n                      minItems: 1\n                      type: array\n                  required:\n                  - name\n                  type: object\n                minItems: 1\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n              prober:\n                description: |-\n                  prober defines the specification for the prober to use for probing targets.\n                  The prober.URL parameter is required. Targets cannot be probed if left empty.\n                properties:\n                  noProxy:\n                    description: |-\n                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                      that should be excluded from proxying. IP and domain names can\n                      contain port numbers.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: string\n                  path:\n                    default: /probe\n                    description: |-\n                      path to collect metrics from.\n                      Defaults to `/probe`.\n                    type: string\n                  proxyConnectHeader:\n                    additionalProperties:\n                      items:\n                        description: SecretKeySelector selects a key of a Secret.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      type: array\n                    description: |-\n                      proxyConnectHeader optionally specifies headers to send to\n                      proxies during CONNECT requests.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  proxyFromEnvironment:\n                    description: |-\n                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: boolean\n                  proxyUrl:\n                    description: proxyUrl defines the HTTP proxy server to use.\n                    pattern: ^(http|https|socks5)://.+$\n                    type: string\n                  scheme:\n                    description: scheme defines the HTTP scheme to use when scraping the prober.\n                    enum:\n                    - http\n                    - https\n                    - HTTP\n                    - HTTPS\n                    type: string\n                  url:\n                    description: |-\n                      url defines the address of the prober.\n\n                      Unlike what the name indicates, the value should be in the form of\n                      `address:port` without any scheme which should be specified in the\n                      `scheme` field.\n                    minLength: 1\n                    type: string\n                required:\n                - url\n                type: object\n              sampleLimit:\n                description: sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n                format: int64\n                type: integer\n              scrapeClass:\n                description: scrapeClass defines the scrape class to apply.\n                minLength: 1\n                type: string\n              scrapeClassicHistograms:\n                description: |-\n                  scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\n                  It requires Prometheus >= v2.45.0.\n\n                  Notice: `scrapeClassicHistograms` corresponds to the `always_scrape_classic_histograms` field in the Prometheus configuration.\n                type: boolean\n              scrapeNativeHistograms:\n                description: |-\n                  scrapeNativeHistograms defines whether to enable scraping of native histograms.\n                  It requires Prometheus >= v3.8.0.\n                type: boolean\n              scrapeProtocols:\n                description: |-\n                  scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\n                  protocols supported by Prometheus in order of preference (from most to least preferred).\n\n                  If unset, Prometheus uses its default value.\n\n                  It requires Prometheus >= v2.49.0.\n                items:\n                  description: |-\n                    ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\n                    Supported values are:\n                    * `OpenMetricsText0.0.1`\n                    * `OpenMetricsText1.0.0`\n                    * `PrometheusProto`\n                    * `PrometheusText0.0.4`\n                    * `PrometheusText1.0.0`\n                  enum:\n                  - PrometheusProto\n                  - OpenMetricsText0.0.1\n                  - OpenMetricsText1.0.0\n                  - PrometheusText0.0.4\n                  - PrometheusText1.0.0\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              scrapeTimeout:\n                description: |-\n                  scrapeTimeout defines the timeout for scraping metrics from the Prometheus exporter.\n                  If not specified, the Prometheus global scrape timeout is used.\n                  The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              targetLimit:\n                description: targetLimit defines a limit on the number of scraped targets that will be accepted.\n                format: int64\n                type: integer\n              targets:\n                description: targets defines a set of static or dynamically discovered targets to probe.\n                properties:\n                  ingress:\n                    description: |-\n                      ingress defines the Ingress objects to probe and the relabeling\n                      configuration.\n                      If `staticConfig` is also defined, `staticConfig` takes precedence.\n                    properties:\n                      namespaceSelector:\n                        description: namespaceSelector defines from which namespaces to select Ingress objects.\n                        properties:\n                          any:\n                            description: |-\n                              any defines the boolean describing whether all namespaces are selected in contrast to a\n                              list restricting them.\n                            type: boolean\n                          matchNames:\n                            description: matchNames defines the list of namespace names to select from.\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      relabelingConfigs:\n                        description: |-\n                          relabelingConfigs to apply to the label set of the target before it gets\n                          scraped.\n                          The original ingress address is available via the\n                          `__tmp_prometheus_ingress_address` label. It can be used to customize the\n                          probed URL.\n                          The original scrape job's name is available via the `__tmp_prometheus_job_name` label.\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        items:\n                          description: |-\n                            RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                            scraped samples and remote write samples.\n\n                            More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                          properties:\n                            action:\n                              default: replace\n                              description: |-\n                                action to perform based on the regex matching.\n\n                                `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                                `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                                Default: \"Replace\"\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: |-\n                                modulus to take of the hash of the source label values.\n\n                                Only applicable when the action is `HashMod`.\n                              format: int64\n                              type: integer\n                            regex:\n                              description: regex defines the regular expression against which the extracted value is matched.\n                              type: string\n                            replacement:\n                              description: |-\n                                replacement value against which a Replace action is performed if the\n                                regular expression matches.\n\n                                Regex capture groups are available.\n                              type: string\n                            separator:\n                              description: separator defines the string between concatenated SourceLabels.\n                              type: string\n                            sourceLabels:\n                              description: |-\n                                sourceLabels defines the source labels select values from existing labels. Their content is\n                                concatenated using the configured Separator and matched against the\n                                configured regular expression.\n                              items:\n                                description: |-\n                                  LabelName is a valid Prometheus label name.\n                                  For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                  For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: |-\n                                targetLabel defines the label to which the resulting string is written in a replacement.\n\n                                It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                                `KeepEqual` and `DropEqual` actions.\n\n                                Regex capture groups are available.\n                              type: string\n                          type: object\n                        type: array\n                      selector:\n                        description: selector to select the Ingress objects.\n                        properties:\n                          matchExpressions:\n                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                            items:\n                              description: |-\n                                A label selector requirement is a selector that contains values, a key, and an operator that\n                                relates the key and values.\n                              properties:\n                                key:\n                                  description: key is the label key that the selector applies to.\n                                  type: string\n                                operator:\n                                  description: |-\n                                    operator represents a key's relationship to a set of values.\n                                    Valid operators are In, NotIn, Exists and DoesNotExist.\n                                  type: string\n                                values:\n                                  description: |-\n                                    values is an array of string values. If the operator is In or NotIn,\n                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                    the values array must be empty. This array is replaced during a strategic\n                                    merge patch.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              required:\n                              - key\n                              - operator\n                              type: object\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          matchLabels:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                              map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                              operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                            type: object\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  staticConfig:\n                    description: |-\n                      staticConfig defines the static list of targets to probe and the\n                      relabeling configuration.\n                      If `ingress` is also defined, `staticConfig` takes precedence.\n                      More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.\n                    properties:\n                      labels:\n                        additionalProperties:\n                          type: string\n                        description: labels defines all labels assigned to all metrics scraped from the targets.\n                        type: object\n                      relabelingConfigs:\n                        description: |-\n                          relabelingConfigs defines relabelings to be apply to the label set of the targets before it gets\n                          scraped.\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        items:\n                          description: |-\n                            RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                            scraped samples and remote write samples.\n\n                            More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                          properties:\n                            action:\n                              default: replace\n                              description: |-\n                                action to perform based on the regex matching.\n\n                                `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                                `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                                Default: \"Replace\"\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: |-\n                                modulus to take of the hash of the source label values.\n\n                                Only applicable when the action is `HashMod`.\n                              format: int64\n                              type: integer\n                            regex:\n                              description: regex defines the regular expression against which the extracted value is matched.\n                              type: string\n                            replacement:\n                              description: |-\n                                replacement value against which a Replace action is performed if the\n                                regular expression matches.\n\n                                Regex capture groups are available.\n                              type: string\n                            separator:\n                              description: separator defines the string between concatenated SourceLabels.\n                              type: string\n                            sourceLabels:\n                              description: |-\n                                sourceLabels defines the source labels select values from existing labels. Their content is\n                                concatenated using the configured Separator and matched against the\n                                configured regular expression.\n                              items:\n                                description: |-\n                                  LabelName is a valid Prometheus label name.\n                                  For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                  For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: |-\n                                targetLabel defines the label to which the resulting string is written in a replacement.\n\n                                It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                                `KeepEqual` and `DropEqual` actions.\n\n                                Regex capture groups are available.\n                              type: string\n                          type: object\n                        type: array\n                      static:\n                        description: static defines the list of hosts to probe.\n                        items:\n                          type: string\n                        type: array\n                    type: object\n                type: object\n              tlsConfig:\n                description: tlsConfig defines the TLS configuration used by the client.\n                properties:\n                  ca:\n                    description: ca defines the Certificate authority used when verifying server certificates.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  cert:\n                    description: cert defines the Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  insecureSkipVerify:\n                    description: insecureSkipVerify defines how to disable target certificate validation.\n                    type: boolean\n                  keySecret:\n                    description: keySecret defines the Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  maxVersion:\n                    description: |-\n                      maxVersion defines the maximum acceptable TLS version.\n\n                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                    enum:\n                    - TLS10\n                    - TLS11\n                    - TLS12\n                    - TLS13\n                    type: string\n                  minVersion:\n                    description: |-\n                      minVersion defines the minimum acceptable TLS version.\n\n                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                    enum:\n                    - TLS10\n                    - TLS11\n                    - TLS12\n                    - TLS13\n                    type: string\n                  serverName:\n                    description: serverName is used to verify the hostname for the targets.\n                    type: string\n                type: object\n            type: object\n          status:\n            description: |-\n              status defines the status subresource. It is under active development and is updated only when the\n              \"StatusForConfigurationResources\" feature gate is enabled.\n\n              Most recent observed status of the Probe. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              bindings:\n                description: bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\n                items:\n                  description: WorkloadBinding is a link between a configuration resource and a workload resource.\n                  properties:\n                    conditions:\n                      description: conditions defines the current state of the configuration resource when bound to the referenced Workload object.\n                      items:\n                        description: ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\n                        properties:\n                          lastTransitionTime:\n                            description: lastTransitionTime defines the time of the last update to the current status property.\n                            format: date-time\n                            type: string\n                          message:\n                            description: message defines the human-readable message indicating details for the condition's last transition.\n                            type: string\n                          observedGeneration:\n                            description: |-\n                              observedGeneration defines the .metadata.generation that the\n                              condition was set based upon. For instance, if `.metadata.generation` is\n                              currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                              condition is out of date with respect to the current state of the object.\n                            format: int64\n                            type: integer\n                          reason:\n                            description: reason for the condition's last transition.\n                            type: string\n                          status:\n                            description: status of the condition.\n                            minLength: 1\n                            type: string\n                          type:\n                            description: |-\n                              type of the condition being reported.\n                              Currently, only \"Accepted\" is supported.\n                            enum:\n                            - Accepted\n                            minLength: 1\n                            type: string\n                        required:\n                        - lastTransitionTime\n                        - status\n                        - type\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - type\n                      x-kubernetes-list-type: map\n                    group:\n                      description: group defines the group of the referenced resource.\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name defines the name of the referenced object.\n                      minLength: 1\n                      type: string\n                    namespace:\n                      description: namespace defines the namespace of the referenced object.\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\n                      enum:\n                      - prometheuses\n                      - prometheusagents\n                      - thanosrulers\n                      - alertmanagers\n                      type: string\n                  required:\n                  - group\n                  - name\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - group\n                - resource\n                - name\n                - namespace\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0prometheusCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: prometheuses.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Prometheus\n    listKind: PrometheusList\n    plural: prometheuses\n    shortNames:\n    - prom\n    singular: prometheus\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `Prometheus` custom resource definition (CRD) defines a desired [Prometheus](https://prometheus.io/docs/prometheus) setup to run in a Kubernetes cluster. It allows to specify many options such as the number of replicas, persistent storage, and Alertmanagers where firing alerts should be sent and many more.\n\n          For each `Prometheus` resource, the Operator deploys one or several `StatefulSet` objects in the same namespace. The number of StatefulSets is equal to the number of shards which is 1 by default.\n\n          The resource defines via label and namespace selectors which `ServiceMonitor`, `PodMonitor`, `Probe` and `PrometheusRule` objects should be associated to the deployed Prometheus instances.\n\n          The Operator continuously reconciles the scrape and rules configuration and a sidecar container running in the Prometheus pods triggers a reload of the configuration when needed.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: |-\n              spec defines the specification of the desired behavior of the Prometheus cluster. More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              additionalAlertManagerConfigs:\n                description: |-\n                  additionalAlertManagerConfigs defines a key of a Secret containing\n                  additional Prometheus Alertmanager configurations. The Alertmanager\n                  configurations are appended to the configuration generated by the\n                  Prometheus Operator. They must be formatted according to the official\n                  Prometheus documentation:\n\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\n\n                  The user is responsible for making sure that the configurations are valid\n\n                  Note that using this feature may expose the possibility to break\n                  upgrades of Prometheus. It is advised to review Prometheus release notes\n                  to ensure that no incompatible AlertManager configs are going to break\n                  Prometheus after the upgrade.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalAlertRelabelConfigs:\n                description: |-\n                  additionalAlertRelabelConfigs defines a key of a Secret containing\n                  additional Prometheus alert relabel configurations. The alert relabel\n                  configurations are appended to the configuration generated by the\n                  Prometheus Operator. They must be formatted according to the official\n                  Prometheus documentation:\n\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\n\n                  The user is responsible for making sure that the configurations are valid\n\n                  Note that using this feature may expose the possibility to break\n                  upgrades of Prometheus. It is advised to review Prometheus release notes\n                  to ensure that no incompatible alert relabel configs are going to break\n                  Prometheus after the upgrade.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalArgs:\n                description: |-\n                  additionalArgs allows setting additional arguments for the 'prometheus' container.\n\n                  It is intended for e.g. activating hidden flags which are not supported by\n                  the dedicated configuration options yet. The arguments are passed as-is to the\n                  Prometheus container which may cause issues if they are invalid or not supported\n                  by the given Prometheus version.\n\n                  In case of an argument conflict (e.g. an argument which is already set by the\n                  operator itself) or when providing an invalid argument, the reconciliation will\n                  fail and an error will be logged.\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: value defines the argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: |-\n                  additionalScrapeConfigs allows specifying a key of a Secret containing\n                  additional Prometheus scrape configurations. Scrape configurations\n                  specified are appended to the configurations generated by the Prometheus\n                  Operator. Job configurations specified must have the form as specified\n                  in the official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config.\n                  As scrape configs are appended, the user is responsible to make sure it\n                  is valid. Note that using this feature may expose the possibility to\n                  break upgrades of Prometheus. It is advised to review Prometheus release\n                  notes to ensure that no incompatible scrape configs are going to break\n                  Prometheus after the upgrade.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: affinity defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: |-\n                            An empty preferred scheduling term matches all objects with implicit weight 0\n                            (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to an update), the system\n                          may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: |-\n                                A null or empty node selector term matches no objects. The requirements of\n                                them are ANDed.\n                                The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                            x-kubernetes-list-type: atomic\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the anti-affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and subtracting\n                          \"weight\" from the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the anti-affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the anti-affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                type: object\n              alerting:\n                description: alerting defines the settings related to Alertmanager.\n                properties:\n                  alertmanagers:\n                    description: alertmanagers endpoints where Prometheus should send alerts to.\n                    items:\n                      description: |-\n                        AlertmanagerEndpoints defines a selection of a single Endpoints object\n                        containing Alertmanager IPs to fire alerts against.\n                      properties:\n                        alertRelabelings:\n                          description: |-\n                            alertRelabelings defines the relabeling configs applied before sending alerts to a specific Alertmanager.\n                            It requires Prometheus >= v2.51.0.\n                          items:\n                            description: |-\n                              RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                              scraped samples and remote write samples.\n\n                              More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                            properties:\n                              action:\n                                default: replace\n                                description: |-\n                                  action to perform based on the regex matching.\n\n                                  `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                                  `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                                  Default: \"Replace\"\n                                enum:\n                                - replace\n                                - Replace\n                                - keep\n                                - Keep\n                                - drop\n                                - Drop\n                                - hashmod\n                                - HashMod\n                                - labelmap\n                                - LabelMap\n                                - labeldrop\n                                - LabelDrop\n                                - labelkeep\n                                - LabelKeep\n                                - lowercase\n                                - Lowercase\n                                - uppercase\n                                - Uppercase\n                                - keepequal\n                                - KeepEqual\n                                - dropequal\n                                - DropEqual\n                                type: string\n                              modulus:\n                                description: |-\n                                  modulus to take of the hash of the source label values.\n\n                                  Only applicable when the action is `HashMod`.\n                                format: int64\n                                type: integer\n                              regex:\n                                description: regex defines the regular expression against which the extracted value is matched.\n                                type: string\n                              replacement:\n                                description: |-\n                                  replacement value against which a Replace action is performed if the\n                                  regular expression matches.\n\n                                  Regex capture groups are available.\n                                type: string\n                              separator:\n                                description: separator defines the string between concatenated SourceLabels.\n                                type: string\n                              sourceLabels:\n                                description: |-\n                                  sourceLabels defines the source labels select values from existing labels. Their content is\n                                  concatenated using the configured Separator and matched against the\n                                  configured regular expression.\n                                items:\n                                  description: |-\n                                    LabelName is a valid Prometheus label name.\n                                    For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                    For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                                  type: string\n                                type: array\n                              targetLabel:\n                                description: |-\n                                  targetLabel defines the label to which the resulting string is written in a replacement.\n\n                                  It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                                  `KeepEqual` and `DropEqual` actions.\n\n                                  Regex capture groups are available.\n                                type: string\n                            type: object\n                          type: array\n                        apiVersion:\n                          description: |-\n                            apiVersion defines the version of the Alertmanager API that Prometheus uses to send alerts.\n                            It can be \"V1\" or \"V2\".\n                            The field has no effect for Prometheus >= v3.0.0 because only the v2 API is supported.\n                          enum:\n                          - v1\n                          - V1\n                          - v2\n                          - V2\n                          type: string\n                        authorization:\n                          description: |-\n                            authorization section for Alertmanager.\n\n                            Cannot be set at the same time as `basicAuth`, `bearerTokenFile` or `sigv4`.\n                          properties:\n                            credentials:\n                              description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type:\n                              description: |-\n                                type defines the authentication type. The value is case-insensitive.\n\n                                \"Basic\" is not a supported value.\n\n                                Default: \"Bearer\"\n                              type: string\n                          type: object\n                        basicAuth:\n                          description: |-\n                            basicAuth configuration for Alertmanager.\n\n                            Cannot be set at the same time as `bearerTokenFile`, `authorization` or `sigv4`.\n                          properties:\n                            password:\n                              description: |-\n                                password defines a key of a Secret containing the password for\n                                authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            username:\n                              description: |-\n                                username defines a key of a Secret containing the username for\n                                authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        bearerTokenFile:\n                          description: |-\n                            bearerTokenFile defines the file to read bearer token for Alertmanager.\n\n                            Cannot be set at the same time as `basicAuth`, `authorization`, or `sigv4`.\n\n                            Deprecated: this will be removed in a future release. Prefer using `authorization`.\n                          type: string\n                        enableHttp2:\n                          description: enableHttp2 defines whether to enable HTTP2.\n                          type: boolean\n                        name:\n                          description: name of the Endpoints object in the namespace.\n                          minLength: 1\n                          type: string\n                        namespace:\n                          description: |-\n                            namespace of the Endpoints object.\n\n                            If not set, the object will be discovered in the namespace of the\n                            Prometheus object.\n                          minLength: 1\n                          type: string\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        pathPrefix:\n                          description: pathPrefix defines the prefix for the HTTP path alerts are pushed to.\n                          minLength: 1\n                          type: string\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: port on which the Alertmanager API is exposed.\n                          x-kubernetes-int-or-string: true\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        relabelings:\n                          description: relabelings defines the relabel configuration applied to the discovered Alertmanagers.\n                          items:\n                            description: |-\n                              RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                              scraped samples and remote write samples.\n\n                              More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                            properties:\n                              action:\n                                default: replace\n                                description: |-\n                                  action to perform based on the regex matching.\n\n                                  `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                                  `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                                  Default: \"Replace\"\n                                enum:\n                                - replace\n                                - Replace\n                                - keep\n                                - Keep\n                                - drop\n                                - Drop\n                                - hashmod\n                                - HashMod\n                                - labelmap\n                                - LabelMap\n                                - labeldrop\n                                - LabelDrop\n                                - labelkeep\n                                - LabelKeep\n                                - lowercase\n                                - Lowercase\n                                - uppercase\n                                - Uppercase\n                                - keepequal\n                                - KeepEqual\n                                - dropequal\n                                - DropEqual\n                                type: string\n                              modulus:\n                                description: |-\n                                  modulus to take of the hash of the source label values.\n\n                                  Only applicable when the action is `HashMod`.\n                                format: int64\n                                type: integer\n                              regex:\n                                description: regex defines the regular expression against which the extracted value is matched.\n                                type: string\n                              replacement:\n                                description: |-\n                                  replacement value against which a Replace action is performed if the\n                                  regular expression matches.\n\n                                  Regex capture groups are available.\n                                type: string\n                              separator:\n                                description: separator defines the string between concatenated SourceLabels.\n                                type: string\n                              sourceLabels:\n                                description: |-\n                                  sourceLabels defines the source labels select values from existing labels. Their content is\n                                  concatenated using the configured Separator and matched against the\n                                  configured regular expression.\n                                items:\n                                  description: |-\n                                    LabelName is a valid Prometheus label name.\n                                    For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                    For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                                  type: string\n                                type: array\n                              targetLabel:\n                                description: |-\n                                  targetLabel defines the label to which the resulting string is written in a replacement.\n\n                                  It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                                  `KeepEqual` and `DropEqual` actions.\n\n                                  Regex capture groups are available.\n                                type: string\n                            type: object\n                          type: array\n                        scheme:\n                          description: scheme defines the HTTP scheme to use when sending alerts.\n                          enum:\n                          - http\n                          - https\n                          - HTTP\n                          - HTTPS\n                          type: string\n                        sigv4:\n                          description: |-\n                            sigv4 defines AWS's Signature Verification 4 for the URL.\n\n                            It requires Prometheus >= v2.48.0.\n\n                            Cannot be set at the same time as `basicAuth`, `bearerTokenFile` or `authorization`.\n                          properties:\n                            accessKey:\n                              description: |-\n                                accessKey defines the AWS API key. If not specified, the environment variable\n                                `AWS_ACCESS_KEY_ID` is used.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            profile:\n                              description: profile defines the named AWS profile used to authenticate.\n                              type: string\n                            region:\n                              description: region defines the AWS region. If blank, the region from the default credentials chain used.\n                              type: string\n                            roleArn:\n                              description: roleArn defines the named AWS profile used to authenticate.\n                              type: string\n                            secretKey:\n                              description: |-\n                                secretKey defines the AWS API secret. If not specified, the environment\n                                variable `AWS_SECRET_ACCESS_KEY` is used.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            useFIPSSTSEndpoint:\n                              description: |-\n                                useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint.\n                                It requires Prometheus >= v2.54.0.\n                              type: boolean\n                          type: object\n                        timeout:\n                          description: timeout defines a per-target Alertmanager timeout when pushing alerts.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        tlsConfig:\n                          description: tlsConfig to use for Alertmanager.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            caFile:\n                              description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                              type: string\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            certFile:\n                              description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                              type: string\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keyFile:\n                              description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                              type: string\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                      required:\n                      - name\n                      - port\n                      type: object\n                    type: array\n                required:\n                - alertmanagers\n                type: object\n              allowOverlappingBlocks:\n                description: |-\n                  allowOverlappingBlocks enables vertical compaction and vertical query\n                  merge in Prometheus.\n\n                  Deprecated: this flag has no effect for Prometheus >= 2.39.0 where overlapping blocks are enabled by default.\n                type: boolean\n              apiserverConfig:\n                description: |-\n                  apiserverConfig allows specifying a host and auth methods to access the\n                  Kuberntees API server.\n                  If null, Prometheus is assumed to run inside of the cluster: it will\n                  discover the API servers automatically and use the Pod's CA certificate\n                  and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\n                properties:\n                  authorization:\n                    description: |-\n                      authorization section for the API server.\n\n                      Cannot be set at the same time as `basicAuth`, `bearerToken`, or\n                      `bearerTokenFile`.\n                    properties:\n                      credentials:\n                        description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                        type: string\n                      type:\n                        description: |-\n                          type defines the authentication type. The value is case-insensitive.\n\n                          \"Basic\" is not a supported value.\n\n                          Default: \"Bearer\"\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: |-\n                      basicAuth configuration for the API server.\n\n                      Cannot be set at the same time as `authorization`, `bearerToken`, or\n                      `bearerTokenFile`.\n                    properties:\n                      password:\n                        description: |-\n                          password defines a key of a Secret containing the password for\n                          authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: |-\n                          username defines a key of a Secret containing the username for\n                          authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: |-\n                      bearerToken is deprecated: this will be removed in a future release.\n                       *Warning: this field shouldn't be used because the token value appears\n                      in clear-text. Prefer using `authorization`.*\n                    type: string\n                  bearerTokenFile:\n                    description: |-\n                      bearerTokenFile defines the file to read bearer token for accessing apiserver.\n\n                      Cannot be set at the same time as `basicAuth`, `authorization`, or `bearerToken`.\n\n                      Deprecated: this will be removed in a future release. Prefer using `authorization`.\n                    type: string\n                  host:\n                    description: |-\n                      host defines the Kubernetes API address consisting of a hostname or IP address followed\n                      by an optional port number.\n                    type: string\n                  noProxy:\n                    description: |-\n                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                      that should be excluded from proxying. IP and domain names can\n                      contain port numbers.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: string\n                  proxyConnectHeader:\n                    additionalProperties:\n                      items:\n                        description: SecretKeySelector selects a key of a Secret.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      type: array\n                    description: |-\n                      proxyConnectHeader optionally specifies headers to send to\n                      proxies during CONNECT requests.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  proxyFromEnvironment:\n                    description: |-\n                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: boolean\n                  proxyUrl:\n                    description: proxyUrl defines the HTTP proxy server to use.\n                    pattern: ^(http|https|socks5)://.+$\n                    type: string\n                  tlsConfig:\n                    description: tlsConfig to use for the API server.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: |-\n                  arbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to\n                  reference arbitrary files on the file system of the 'prometheus'\n                  container.\n                  When a ServiceMonitor's endpoint specifies a `bearerTokenFile` value\n                  (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'), a\n                  malicious target can get access to the Prometheus service account's\n                  token in the Prometheus' scrape request. Setting\n                  `spec.arbitraryFSAccessThroughSM` to 'true' would prevent the attack.\n                  Users should instead provide the credentials using the\n                  `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    description: |-\n                      deny prevents service monitors from accessing arbitrary files on the file system.\n                      When true, service monitors cannot use file-based configurations like BearerTokenFile\n                      that could potentially access sensitive files. When false (default), such access is allowed.\n                      Setting this to true enhances security by preventing potential credential theft attacks.\n                    type: boolean\n                type: object\n              automountServiceAccountToken:\n                description: |-\n                  automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod.\n                  If the field isn't set, the operator mounts the service account token by default.\n\n                  **Warning:** be aware that by default, Prometheus requires the service account token for Kubernetes service discovery.\n                  It is possible to use strategic merge patch to project the service account token into the 'prometheus' container.\n                type: boolean\n              baseImage:\n                description: 'baseImage is deprecated: use ''spec.image'' instead.'\n                type: string\n              bodySizeLimit:\n                description: |-\n                  bodySizeLimit defines per-scrape on response body size.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              configMaps:\n                description: |-\n                  configMaps defines a list of ConfigMaps in the same namespace as the Prometheus\n                  object, which shall be mounted into the Prometheus Pods.\n                  Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-<configmap-name>`.\n                  The ConfigMaps are mounted into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: |-\n                  containers allows injecting additional containers or modifying operator\n                  generated containers. This can be used to allow adding an authentication\n                  proxy to the Pods or to change the behavior of an operator generated\n                  container. Containers described here modify an operator generated\n                  container if they share the same name and modifications are done via a\n                  strategic merge patch.\n\n                  The names of containers managed by the operator are:\n                  * `prometheus`\n                  * `config-reloader`\n                  * `thanos-sidecar`\n\n                  Overriding containers which are managed by the operator require careful\n                  testing, especially when upgrading to a new version of the operator.\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              convertClassicHistogramsToNHCB:\n                description: |-\n                  convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native\n                  histogram with custom buckets.\n\n                  It requires Prometheus >= v3.4.0.\n                type: boolean\n              disableCompaction:\n                description: |-\n                  disableCompaction when true, the Prometheus compaction is disabled.\n                  When `spec.thanos.objectStorageConfig` or `spec.objectStorageConfigFile` are defined, the operator automatically\n                  disables block compaction to avoid race conditions during block uploads (as the Thanos documentation recommends).\n                type: boolean\n              dnsConfig:\n                description: dnsConfig defines the DNS configuration for the pods.\n                properties:\n                  nameservers:\n                    description: |-\n                      nameservers defines the list of DNS name server IP addresses.\n                      This will be appended to the base nameservers generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                  options:\n                    description: |-\n                      options defines the list of DNS resolver options.\n                      This will be merged with the base options generated from DNSPolicy.\n                      Resolution options given in Options\n                      will override those that appear in the base DNSPolicy.\n                    items:\n                      description: PodDNSConfigOption defines DNS resolver options of a pod.\n                      properties:\n                        name:\n                          description: name is required and must be unique.\n                          minLength: 1\n                          type: string\n                        value:\n                          description: value is optional.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  searches:\n                    description: |-\n                      searches defines the list of DNS search domains for host-name lookup.\n                      This will be appended to the base search paths generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                type: object\n              dnsPolicy:\n                description: dnsPolicy defines the DNS policy for the pods.\n                enum:\n                - ClusterFirstWithHostNet\n                - ClusterFirst\n                - Default\n                - None\n                type: string\n              enableAdminAPI:\n                description: |-\n                  enableAdminAPI defines access to the Prometheus web admin API.\n\n                  WARNING: Enabling the admin APIs enables mutating endpoints, to delete data,\n                  shutdown Prometheus, and more. Enabling this should be done with care and the\n                  user is advised to add additional authentication authorization via a proxy to\n                  ensure only clients authorized to perform these actions can do so.\n\n                  For more information:\n                  https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\n                type: boolean\n              enableFeatures:\n                description: |-\n                  enableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\n\n                  Enabling features which are disabled by default is entirely outside the\n                  scope of what the maintainers will support and by doing so, you accept\n                  that this behaviour may break at any time without notice.\n\n                  For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\n                items:\n                  minLength: 1\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              enableOTLPReceiver:\n                description: |-\n                  enableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\n\n                  Note that the OTLP receiver endpoint is automatically enabled if `.spec.otlpConfig` is defined.\n\n                  It requires Prometheus >= v2.47.0.\n                type: boolean\n              enableRemoteWriteReceiver:\n                description: |-\n                  enableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote\n                  write protocol.\n\n                  WARNING: This is not considered an efficient way of ingesting samples.\n                  Use it with caution for specific low-volume use cases.\n                  It is not suitable for replacing the ingestion via scraping and turning\n                  Prometheus into a push-based metrics collection system.\n                  For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\n\n                  It requires Prometheus >= v2.33.0.\n                type: boolean\n              enableServiceLinks:\n                description: enableServiceLinks defines whether information about services should be injected into pod's environment variables\n                type: boolean\n              enforcedBodySizeLimit:\n                description: |-\n                  enforcedBodySizeLimit when defined specifies a global limit on the size\n                  of uncompressed response body that will be accepted by Prometheus.\n                  Targets responding with a body larger than this many bytes will cause\n                  the scrape to fail.\n\n                  It requires Prometheus >= v2.28.0.\n\n                  When both `enforcedBodySizeLimit` and `bodySizeLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined bodySizeLimit value will inherit the global bodySizeLimit value (Prometheus >= 2.45.0) or the enforcedBodySizeLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedBodySizeLimit` is greater than the `bodySizeLimit`, the `bodySizeLimit` will be set to `enforcedBodySizeLimit`.\n                  * Scrape objects with a bodySizeLimit value less than or equal to enforcedBodySizeLimit keep their specific value.\n                  * Scrape objects with a bodySizeLimit value greater than enforcedBodySizeLimit are set to enforcedBodySizeLimit.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedKeepDroppedTargets:\n                description: |-\n                  enforcedKeepDroppedTargets when defined specifies a global limit on the number of targets\n                  dropped by relabeling that will be kept in memory. The value overrides\n                  any `spec.keepDroppedTargets` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.keepDroppedTargets` is\n                  greater than zero and less than `spec.enforcedKeepDroppedTargets`.\n\n                  It requires Prometheus >= v2.47.0.\n\n                  When both `enforcedKeepDroppedTargets` and `keepDroppedTargets` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined keepDroppedTargets value will inherit the global keepDroppedTargets value (Prometheus >= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedKeepDroppedTargets` is greater than the `keepDroppedTargets`, the `keepDroppedTargets` will be set to `enforcedKeepDroppedTargets`.\n                  * Scrape objects with a keepDroppedTargets value less than or equal to enforcedKeepDroppedTargets keep their specific value.\n                  * Scrape objects with a keepDroppedTargets value greater than enforcedKeepDroppedTargets are set to enforcedKeepDroppedTargets.\n                format: int64\n                type: integer\n              enforcedLabelLimit:\n                description: |-\n                  enforcedLabelLimit when defined specifies a global limit on the number\n                  of labels per sample. The value overrides any `spec.labelLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.labelLimit` is\n                  greater than zero and less than `spec.enforcedLabelLimit`.\n\n                  It requires Prometheus >= v2.27.0.\n\n                  When both `enforcedLabelLimit` and `labelLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined labelLimit value will inherit the global labelLimit value (Prometheus >= 2.45.0) or the enforcedLabelLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedLabelLimit` is greater than the `labelLimit`, the `labelLimit` will be set to `enforcedLabelLimit`.\n                  * Scrape objects with a labelLimit value less than or equal to enforcedLabelLimit keep their specific value.\n                  * Scrape objects with a labelLimit value greater than enforcedLabelLimit are set to enforcedLabelLimit.\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: |-\n                  enforcedLabelNameLengthLimit when defined specifies a global limit on the length\n                  of labels name per sample. The value overrides any `spec.labelNameLengthLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelNameLengthLimit`.\n\n                  It requires Prometheus >= v2.27.0.\n\n                  When both `enforcedLabelNameLengthLimit` and `labelNameLengthLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined labelNameLengthLimit value will inherit the global labelNameLengthLimit value (Prometheus >= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedLabelNameLengthLimit` is greater than the `labelNameLengthLimit`, the `labelNameLengthLimit` will be set to `enforcedLabelNameLengthLimit`.\n                  * Scrape objects with a labelNameLengthLimit value less than or equal to enforcedLabelNameLengthLimit keep their specific value.\n                  * Scrape objects with a labelNameLengthLimit value greater than enforcedLabelNameLengthLimit are set to enforcedLabelNameLengthLimit.\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: |-\n                  enforcedLabelValueLengthLimit when not null defines a global limit on the length\n                  of labels value per sample. The value overrides any `spec.labelValueLengthLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelValueLengthLimit`.\n\n                  It requires Prometheus >= v2.27.0.\n\n                  When both `enforcedLabelValueLengthLimit` and `labelValueLengthLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined labelValueLengthLimit value will inherit the global labelValueLengthLimit value (Prometheus >= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedLabelValueLengthLimit` is greater than the `labelValueLengthLimit`, the `labelValueLengthLimit` will be set to `enforcedLabelValueLengthLimit`.\n                  * Scrape objects with a labelValueLengthLimit value less than or equal to enforcedLabelValueLengthLimit keep their specific value.\n                  * Scrape objects with a labelValueLengthLimit value greater than enforcedLabelValueLengthLimit are set to enforcedLabelValueLengthLimit.\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: |-\n                  enforcedNamespaceLabel when not empty, a label will be added to:\n\n                  1. All metrics scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig` objects.\n                  2. All metrics generated from recording rules defined in `PrometheusRule` objects.\n                  3. All alerts generated from alerting rules defined in `PrometheusRule` objects.\n                  4. All vector selectors of PromQL expressions defined in `PrometheusRule` objects.\n\n                  The label will not added for objects referenced in `spec.excludedFromEnforcement`.\n\n                  The label's name is this field's value.\n                  The label's value is the namespace of the `ServiceMonitor`,\n                  `PodMonitor`, `Probe`, `PrometheusRule` or `ScrapeConfig` object.\n                type: string\n              enforcedSampleLimit:\n                description: |-\n                  enforcedSampleLimit when defined specifies a global limit on the number\n                  of scraped samples that will be accepted. This overrides any\n                  `spec.sampleLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.sampleLimit` is greater than zero and less than\n                  `spec.enforcedSampleLimit`.\n\n                  It is meant to be used by admins to keep the overall number of\n                  samples/series under a desired limit.\n\n                  When both `enforcedSampleLimit` and `sampleLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined sampleLimit value will inherit the global sampleLimit value (Prometheus >= 2.45.0) or the enforcedSampleLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedSampleLimit` is greater than the `sampleLimit`, the `sampleLimit` will be set to `enforcedSampleLimit`.\n                  * Scrape objects with a sampleLimit value less than or equal to enforcedSampleLimit keep their specific value.\n                  * Scrape objects with a sampleLimit value greater than enforcedSampleLimit are set to enforcedSampleLimit.\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: |-\n                  enforcedTargetLimit when defined specifies a global limit on the number\n                  of scraped targets. The value overrides any `spec.targetLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.targetLimit` is\n                  greater than zero and less than `spec.enforcedTargetLimit`.\n\n                  It is meant to be used by admins to to keep the overall number of\n                  targets under a desired limit.\n\n                  When both `enforcedTargetLimit` and `targetLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined targetLimit value will inherit the global targetLimit value (Prometheus >= 2.45.0) or the enforcedTargetLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedTargetLimit` is greater than the `targetLimit`, the `targetLimit` will be set to `enforcedTargetLimit`.\n                  * Scrape objects with a targetLimit value less than or equal to enforcedTargetLimit keep their specific value.\n                  * Scrape objects with a targetLimit value greater than enforcedTargetLimit are set to enforcedTargetLimit.\n                format: int64\n                type: integer\n              evaluationInterval:\n                default: 30s\n                description: |-\n                  evaluationInterval defines the interval between rule evaluations.\n                  Default: \"30s\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: |-\n                  excludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\n                  to be excluded from enforcing a namespace label of origin.\n\n                  It is only applicable if `spec.enforcedNamespaceLabel` set to true.\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: group of the referent. When not specified, it defaults to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name of the referent. When not set, all resources in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: |-\n                        namespace of the referent.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      - scrapeconfigs\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              exemplars:\n                description: |-\n                  exemplars related settings that are runtime reloadable.\n                  It requires to enable the `exemplar-storage` feature flag to be effective.\n                properties:\n                  maxSize:\n                    description: |-\n                      maxSize defines the maximum number of exemplars stored in memory for all series.\n\n                      exemplar-storage itself must be enabled using the `spec.enableFeature`\n                      option for exemplars to be scraped in the first place.\n\n                      If not set, Prometheus uses its default value. A value of zero or less\n                      than zero disables the storage.\n                    format: int64\n                    type: integer\n                type: object\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: |-\n                  externalLabels defines the labels to add to any time series or alerts when communicating with\n                  external systems (federation, remote storage, Alertmanager).\n                  Labels defined by `spec.replicaExternalLabelName` and\n                  `spec.prometheusExternalLabelName` take precedence over this list.\n                type: object\n              externalUrl:\n                description: |-\n                  externalUrl defines the external URL under which the Prometheus service is externally\n                  available. This is necessary to generate correct URLs (for instance if\n                  Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: |-\n                  hostAliases defines the optional list of hosts and IPs that will be injected into the Pod's\n                  hosts file if specified.\n                items:\n                  description: |-\n                    HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\n                    pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: hostnames defines hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: ip defines the IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: |-\n                  hostNetwork defines the host's network namespace if true.\n\n                  Make sure to understand the security implications if you want to enable\n                  it (https://kubernetes.io/docs/concepts/configuration/overview/ ).\n\n                  When hostNetwork is enabled, this will set the DNS policy to\n                  `ClusterFirstWithHostNet` automatically (unless `.spec.DNSPolicy` is set\n                  to a different value).\n                type: boolean\n              hostUsers:\n                description: |-\n                  hostUsers supports the user space in Kubernetes.\n\n                  More info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\n\n                  The feature requires at least Kubernetes 1.28 with the `UserNamespacesSupport` feature gate enabled.\n                  Starting Kubernetes 1.33, the feature is enabled by default.\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: |-\n                  ignoreNamespaceSelectors when true, `spec.namespaceSelector` from all PodMonitor, ServiceMonitor\n                  and Probe objects will be ignored. They will only discover targets\n                  within the namespace of the PodMonitor, ServiceMonitor and Probe\n                  object.\n                type: boolean\n              image:\n                description: |-\n                  image defines the container image name for Prometheus. If specified, it takes precedence\n                  over the `spec.baseImage`, `spec.tag` and `spec.sha` fields.\n\n                  Specifying `spec.version` is still necessary to ensure the Prometheus\n                  Operator knows which version of Prometheus is being configured.\n\n                  If neither `spec.image` nor `spec.baseImage` are defined, the operator\n                  will use the latest upstream version of Prometheus available at the time\n                  when the operator was released.\n                type: string\n              imagePullPolicy:\n                description: |-\n                  imagePullPolicy defines the image pull policy for the 'prometheus', 'init-config-reloader' and 'config-reloader' containers.\n                  See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: |-\n                  imagePullSecrets defines an optional list of references to Secrets in the same namespace\n                  to use for pulling images from registries.\n                  See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: |-\n                    LocalObjectReference contains enough information to let you locate the\n                    referenced object inside the same namespace.\n                  properties:\n                    name:\n                      default: \"\"\n                      description: |-\n                        Name of the referent.\n                        This field is effectively required, but due to backwards compatibility is\n                        allowed to be empty. Instances of this type with an empty value here are\n                        almost certainly wrong.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: |-\n                  initContainers allows injecting initContainers to the Pod definition. Those\n                  can be used to e.g. fetch secrets for injection into the Prometheus\n                  configuration from external sources. Any errors during the execution of\n                  an initContainer will lead to a restart of the Pod. More info:\n                  https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done via a\n                  strategic merge patch.\n\n                  The names of init container name managed by the operator are:\n                  * `init-config-reloader`.\n\n                  Overriding init containers which are managed by the operator require\n                  careful testing, especially when upgrading to a new version of the\n                  operator.\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              keepDroppedTargets:\n                description: |-\n                  keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\n                  that will be kept in memory. 0 means no limit.\n\n                  It requires Prometheus >= v2.47.0.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\n                format: int64\n                type: integer\n              labelLimit:\n                description: |-\n                  labelLimit defines per-scrape limit on number of labels that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: |-\n                  labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: |-\n                  labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\n                format: int64\n                type: integer\n              listenLocal:\n                description: |-\n                  listenLocal when true, the Prometheus server listens on the loopback address\n                  instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: logFormat for Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: logLevel for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              maximumStartupDurationSeconds:\n                description: |-\n                  maximumStartupDurationSeconds defines the maximum time that the `prometheus` container's startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete.\n                  If set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\n                format: int32\n                minimum: 60\n                type: integer\n              minReadySeconds:\n                description: |-\n                  minReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready\n                  without any of its container crashing for it to be considered available.\n\n                  If unset, pods will be considered available as soon as they are ready.\n                format: int32\n                minimum: 0\n                type: integer\n              nameEscapingScheme:\n                description: |-\n                  nameEscapingScheme defines the character escaping scheme that will be requested when scraping\n                  for metric and label names that do not conform to the legacy Prometheus\n                  character set.\n\n                  It requires Prometheus >= v3.4.0.\n                enum:\n                - AllowUTF8\n                - Underscores\n                - Dots\n                - Values\n                type: string\n              nameValidationScheme:\n                description: |-\n                  nameValidationScheme defines the validation scheme for metric and label names.\n\n                  It requires Prometheus >= v2.55.0.\n                enum:\n                - UTF8\n                - Legacy\n                type: string\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: nodeSelector defines on which Nodes the Pods are scheduled.\n                type: object\n              otlp:\n                description: |-\n                  otlp defines the settings related to the OTLP receiver feature.\n                  It requires Prometheus >= v2.55.0.\n                properties:\n                  convertHistogramsToNHCB:\n                    description: |-\n                      convertHistogramsToNHCB defines optional translation of OTLP explicit bucket histograms into native histograms with custom buckets.\n                      It requires Prometheus >= v3.4.0.\n                    type: boolean\n                  ignoreResourceAttributes:\n                    description: |-\n                      ignoreResourceAttributes defines the list of OpenTelemetry resource attributes to ignore when `promoteAllResourceAttributes` is true.\n\n                      It requires `promoteAllResourceAttributes` to be true.\n                      It requires Prometheus >= v3.5.0.\n                    items:\n                      minLength: 1\n                      type: string\n                    minItems: 1\n                    type: array\n                    x-kubernetes-list-type: set\n                  keepIdentifyingResourceAttributes:\n                    description: |-\n                      keepIdentifyingResourceAttributes enables adding `service.name`, `service.namespace` and `service.instance.id`\n                      resource attributes to the `target_info` metric, on top of converting them into the `instance` and `job` labels.\n\n                      It requires Prometheus >= v3.1.0.\n                    type: boolean\n                  promoteAllResourceAttributes:\n                    description: |-\n                      promoteAllResourceAttributes promotes all resource attributes to metric labels except the ones defined in `ignoreResourceAttributes`.\n\n                      Cannot be true when `promoteResourceAttributes` is defined.\n                      It requires Prometheus >= v3.5.0.\n                    type: boolean\n                  promoteResourceAttributes:\n                    description: |-\n                      promoteResourceAttributes defines the list of OpenTelemetry Attributes that should be promoted to metric labels, defaults to none.\n                      Cannot be defined when `promoteAllResourceAttributes` is true.\n                    items:\n                      minLength: 1\n                      type: string\n                    minItems: 1\n                    type: array\n                    x-kubernetes-list-type: set\n                  promoteScopeMetadata:\n                    description: |-\n                      promoteScopeMetadata controls whether to promote OpenTelemetry scope metadata (i.e. name, version, schema URL, and attributes) to metric labels.\n                      As per the OpenTelemetry specification, the aforementioned scope metadata should be identifying, i.e. made into metric labels.\n                      It requires Prometheus >= v3.6.0.\n                    type: boolean\n                  translationStrategy:\n                    description: |-\n                      translationStrategy defines how the OTLP receiver endpoint translates the incoming metrics.\n\n                      It requires Prometheus >= v3.0.0.\n                    enum:\n                    - NoUTF8EscapingWithSuffixes\n                    - UnderscoreEscapingWithSuffixes\n                    - NoTranslation\n                    - UnderscoreEscapingWithoutSuffixes\n                    type: string\n                type: object\n              overrideHonorLabels:\n                description: |-\n                  overrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data\n                   to “exported_” for all targets created from ServiceMonitor, PodMonitor and\n                  ScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies.\n                  In practice,`OverrideHonorLabels:true` enforces `honorLabels:false`\n                  for all ServiceMonitor, PodMonitor and ScrapeConfig objects.\n                type: boolean\n              overrideHonorTimestamps:\n                description: |-\n                  overrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created\n                  from service and pod monitors.\n                  Otherwise the HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: |-\n                  paused defines when a Prometheus deployment is paused, no actions except for deletion\n                  will be performed on the underlying objects.\n                type: boolean\n              persistentVolumeClaimRetentionPolicy:\n                description: |-\n                  persistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\n                  The default behavior is all PVCs are retained.\n                  This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\n                  It requires enabling the StatefulSetAutoDeletePVC feature gate.\n                properties:\n                  whenDeleted:\n                    description: |-\n                      WhenDeleted specifies what happens to PVCs created from StatefulSet\n                      VolumeClaimTemplates when the StatefulSet is deleted. The default policy\n                      of `Retain` causes PVCs to not be affected by StatefulSet deletion. The\n                      `Delete` policy causes those PVCs to be deleted.\n                    type: string\n                  whenScaled:\n                    description: |-\n                      WhenScaled specifies what happens to PVCs created from StatefulSet\n                      VolumeClaimTemplates when the StatefulSet is scaled down. The default\n                      policy of `Retain` causes PVCs to not be affected by a scaledown. The\n                      `Delete` policy causes the associated PVCs for any excess pods above\n                      the replica count to be deleted.\n                    type: string\n                type: object\n              podManagementPolicy:\n                description: |-\n                  podManagementPolicy defines the policy for creating/deleting pods when\n                  scaling up and down.\n\n                  Unlike the default StatefulSet behavior, the default policy is\n                  `Parallel` to avoid manual intervention in case a pod gets stuck during\n                  a rollout.\n\n                  Note that updating this value implies the recreation of the StatefulSet\n                  which incurs a service outage.\n                enum:\n                - OrderedReady\n                - Parallel\n                type: string\n              podMetadata:\n                description: |-\n                  podMetadata defines labels and annotations which are propagated to the Prometheus pods.\n\n                  The following items are reserved and cannot be overridden:\n                  * \"prometheus\" label, set to the name of the Prometheus object.\n                  * \"app.kubernetes.io/instance\" label, set to the name of the Prometheus object.\n                  * \"app.kubernetes.io/managed-by\" label, set to \"prometheus-operator\".\n                  * \"app.kubernetes.io/name\" label, set to \"prometheus\".\n                  * \"app.kubernetes.io/version\" label, set to the Prometheus version.\n                  * \"operator.prometheus.io/name\" label, set to the name of the Prometheus object.\n                  * \"operator.prometheus.io/shard\" label, set to the shard number of the Prometheus object.\n                  * \"kubectl.kubernetes.io/default-container\" annotation, set to \"prometheus\".\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      annotations defines an unstructured key value map stored with a resource that may be\n                      set by external tools to store and retrieve arbitrary metadata. They are not\n                      queryable and should be preserved when modifying objects.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      labels define the map of string keys and values that can be used to organize and categorize\n                      (scope and select) objects. May match selectors of replication controllers\n                      and services.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                    type: object\n                  name:\n                    description: |-\n                      name must be unique within a namespace. Is required when creating resources, although\n                      some resources may allow a client to request the generation of an appropriate name\n                      automatically. Name is primarily intended for creation idempotence and configuration\n                      definition.\n                      Cannot be updated.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: |-\n                  podMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector\n                  matches all namespaces. A null label selector (default value) matches the current\n                  namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: |-\n                  podMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector\n                  matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: |-\n                  podTargetLabels are appended to the `spec.podTargetLabels` field of all\n                  PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: |-\n                  portName used for the pods and governing service.\n                  Default: \"web\"\n                type: string\n              priorityClassName:\n                description: priorityClassName assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: |-\n                  probeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label\n                  selector matches all namespaces. A null label selector matches the\n                  current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: |-\n                  probeSelector defines the probes to be selected for target discovery. An empty label selector\n                  matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: |-\n                  prometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance\n                  name. The external label will _not_ be added when the field is set to\n                  the empty string (`\"\"`).\n\n                  Default: \"prometheus\"\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: |-\n                  prometheusRulesExcludedFromEnforce defines the list of PrometheusRule objects to which the namespace label\n                  enforcement doesn't apply.\n                  This is only relevant when `spec.enforcedNamespaceLabel` is set to true.\n                  Deprecated: use `spec.excludedFromEnforcement` instead.\n                items:\n                  description: |-\n                    PrometheusRuleExcludeConfig enables users to configure excluded\n                    PrometheusRule names and their namespaces to be ignored while enforcing\n                    namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: ruleName defines the name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: ruleNamespace defines the namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              query:\n                description: query defines the configuration of the Prometheus query service.\n                properties:\n                  lookbackDelta:\n                    description: lookbackDelta defines the delta difference allowed for retrieving metrics during expression evaluations.\n                    type: string\n                  maxConcurrency:\n                    description: maxConcurrency defines the number of concurrent queries that can be run at once.\n                    format: int32\n                    minimum: 1\n                    type: integer\n                  maxSamples:\n                    description: |-\n                      maxSamples defines the maximum number of samples a single query can load into memory. Note that\n                      queries will fail if they would load more samples than this into memory,\n                      so this also limits the number of samples a query can return.\n                    format: int32\n                    type: integer\n                  timeout:\n                    description: timeout defines the maximum time a query may take before being aborted.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              queryLogFile:\n                description: |-\n                  queryLogFile specifies where the file to which PromQL queries are logged.\n\n                  If the filename has an empty path, e.g. 'query.log', The Prometheus Pods\n                  will mount the file into an emptyDir volume at `/var/log/prometheus`.\n                  If a full path is provided, e.g. '/var/log/prometheus/query.log', you\n                  must mount a volume in the specified directory and it must be writable.\n                  This is because the prometheus container runs with a read-only root\n                  filesystem for security reasons.\n                  Alternatively, the location can be set to a standard I/O stream, e.g.\n                  `/dev/stdout`, to log query information to the default Prometheus log\n                  stream.\n                type: string\n              reloadStrategy:\n                description: |-\n                  reloadStrategy defines the strategy used to reload the Prometheus configuration.\n                  If not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\n                enum:\n                - HTTP\n                - ProcessSignal\n                type: string\n              remoteRead:\n                description: remoteRead defines the list of remote read configurations.\n                items:\n                  description: |-\n                    RemoteReadSpec defines the configuration for Prometheus to read back samples\n                    from a remote endpoint.\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization section for the URL.\n\n                        It requires Prometheus >= v2.26.0.\n\n                        Cannot be set at the same time as `basicAuth`, or `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth configuration for the URL.\n\n                        Cannot be set at the same time as `authorization`, or `oauth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: |-\n                        bearerToken is deprecated: this will be removed in a future release.\n                        *Warning: this field shouldn't be used because the token value appears\n                        in clear-text. Prefer using `authorization`.*\n                      type: string\n                    bearerTokenFile:\n                      description: |-\n                        bearerTokenFile defines the file from which to read the bearer token for the URL.\n\n                        Deprecated: this will be removed in a future release. Prefer using `authorization`.\n                      type: string\n                    filterExternalLabels:\n                      description: |-\n                        filterExternalLabels defines whether to use the external labels as selectors for the remote read endpoint.\n\n                        It requires Prometheus >= v2.34.0.\n                      type: boolean\n                    followRedirects:\n                      description: |-\n                        followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n\n                        It requires Prometheus >= v2.26.0.\n                      type: boolean\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: |-\n                        headers defines the custom HTTP headers to be sent along with each remote read request.\n                        Be aware that headers that are set by Prometheus itself can't be overwritten.\n                        Only valid in Prometheus versions 2.26.0 and newer.\n                      type: object\n                    name:\n                      description: |-\n                        name of the remote read queue, it must be unique if specified. The\n                        name is used in metrics and logging in order to differentiate read\n                        configurations.\n\n                        It requires Prometheus >= v2.15.0.\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 configuration for the URL.\n\n                        It requires Prometheus >= v2.27.0.\n\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    readRecent:\n                      description: |-\n                        readRecent defines whether reads should be made for queries for time ranges that\n                        the local storage should have complete data for.\n                      type: boolean\n                    remoteTimeout:\n                      description: remoteTimeout defines the timeout for requests to the remote read endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    requiredMatchers:\n                      additionalProperties:\n                        type: string\n                      description: |-\n                        requiredMatchers defines an optional list of equality matchers which have to be present\n                        in a selector to query the remote read endpoint.\n                      type: object\n                    tlsConfig:\n                      description: tlsConfig to use for the URL.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: url defines the URL of the endpoint to query from.\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              remoteWrite:\n                description: remoteWrite defines the list of remote write configurations.\n                items:\n                  description: |-\n                    RemoteWriteSpec defines the configuration to write samples from Prometheus\n                    to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization section for the URL.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `sigv4`, `basicAuth`, `oauth2`, or `azureAd`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    azureAd:\n                      description: |-\n                        azureAd for the URL.\n\n                        It requires Prometheus >= v2.45.0 or Thanos >= v0.31.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `sigv4`.\n                      properties:\n                        cloud:\n                          description: cloud defines the Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.\n                          enum:\n                          - AzureChina\n                          - AzureGovernment\n                          - AzurePublic\n                          type: string\n                        managedIdentity:\n                          description: |-\n                            managedIdentity defines the Azure User-assigned Managed identity.\n                            Cannot be set at the same time as `oauth`, `sdk` or `workloadIdentity`.\n                          properties:\n                            clientId:\n                              description: |-\n                                clientId defines the Azure User-assigned Managed identity.\n\n                                For Prometheus >= 3.5.0 and Thanos >= 0.40.0, this field is allowed to be empty to support system-assigned managed identities.\n                              minLength: 1\n                              type: string\n                          type: object\n                        oauth:\n                          description: |-\n                            oauth defines the oauth config that is being used to authenticate.\n                            Cannot be set at the same time as `managedIdentity`, `sdk` or `workloadIdentity`.\n\n                            It requires Prometheus >= v2.48.0 or Thanos >= v0.31.0.\n                          properties:\n                            clientId:\n                              description: clientId defines the clientId of the Azure Active Directory application that is being used to authenticate.\n                              minLength: 1\n                              type: string\n                            clientSecret:\n                              description: clientSecret specifies a key of a Secret containing the client secret of the Azure Active Directory application that is being used to authenticate.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            tenantId:\n                              description: tenantId is the tenant ID of the Azure Active Directory application that is being used to authenticate.\n                              minLength: 1\n                              pattern: ^[0-9a-zA-Z-.]+$\n                              type: string\n                          required:\n                          - clientId\n                          - clientSecret\n                          - tenantId\n                          type: object\n                        scope:\n                          description: |-\n                            scope is the custom OAuth 2.0 scope to request when acquiring tokens.\n                            It requires Prometheus >= 3.9.0. Currently not supported by Thanos.\n                          pattern: ^[\\w\\s:/.\\\\-]+$\n                          type: string\n                        sdk:\n                          description: |-\n                            sdk defines the Azure SDK config that is being used to authenticate.\n                            See https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\n                            Cannot be set at the same time as `oauth`, `managedIdentity` or `workloadIdentity`.\n\n                            It requires Prometheus >= v2.52.0 or Thanos >= v0.36.0.\n                          properties:\n                            tenantId:\n                              description: tenantId defines the tenant ID of the azure active directory application that is being used to authenticate.\n                              pattern: ^[0-9a-zA-Z-.]+$\n                              type: string\n                          type: object\n                        workloadIdentity:\n                          description: |-\n                            workloadIdentity defines the Azure Workload Identity authentication.\n                            Cannot be set at the same time as `oauth`, `managedIdentity`, or `sdk`.\n\n                            It requires Prometheus >= 3.7.0. Currently not supported by Thanos.\n                          properties:\n                            clientId:\n                              description: clientId is the clientID of the Azure Active Directory application.\n                              minLength: 1\n                              type: string\n                            tenantId:\n                              description: tenantId is the tenant ID of the Azure Active Directory application.\n                              minLength: 1\n                              type: string\n                          required:\n                          - clientId\n                          - tenantId\n                          type: object\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth configuration for the URL.\n\n                        Cannot be set at the same time as `sigv4`, `authorization`, `oauth2`, or `azureAd`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: |-\n                        bearerToken is deprecated: this will be removed in a future release.\n                        *Warning: this field shouldn't be used because the token value appears\n                        in clear-text. Prefer using `authorization`.*\n                      type: string\n                    bearerTokenFile:\n                      description: |-\n                        bearerTokenFile defines the file from which to read bearer token for the URL.\n\n                        Deprecated: this will be removed in a future release. Prefer using `authorization`.\n                      type: string\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: |-\n                        followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n                      type: boolean\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: |-\n                        headers defines the custom HTTP headers to be sent along with each remote write request.\n                        Be aware that headers that are set by Prometheus itself can't be overwritten.\n\n                        It requires Prometheus >= v2.25.0 or Thanos >= v0.24.0.\n                      type: object\n                    messageVersion:\n                      description: |-\n                        messageVersion defines the Remote Write message's version to use when writing to the endpoint.\n\n                        `Version1.0` corresponds to the `prometheus.WriteRequest` protobuf message introduced in Remote Write 1.0.\n                        `Version2.0` corresponds to the `io.prometheus.write.v2.Request` protobuf message introduced in Remote Write 2.0.\n\n                        When `Version2.0` is selected, Prometheus will automatically be\n                        configured to append the metadata of scraped metrics to the WAL.\n\n                        Before setting this field, consult with your remote storage provider\n                        what message version it supports.\n\n                        It requires Prometheus >= v2.54.0 or Thanos >= v0.37.0.\n                      enum:\n                      - V1.0\n                      - V2.0\n                      type: string\n                    metadataConfig:\n                      description: |-\n                        metadataConfig defines how to send a series metadata to the remote storage.\n\n                        When the field is empty, **no metadata** is sent. But when the field is\n                        null, metadata is sent.\n                      properties:\n                        maxSamplesPerSend:\n                          description: |-\n                            maxSamplesPerSend defines the maximum number of metadata samples per send.\n\n                            It requires Prometheus >= v2.29.0.\n                          format: int32\n                          minimum: -1\n                          type: integer\n                        send:\n                          description: send defines whether metric metadata is sent to the remote storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: sendInterval defines how frequently metric metadata is sent to the remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: |-\n                        name of the remote write queue, it must be unique if specified. The\n                        name is used in metrics and logging in order to differentiate queues.\n\n                        It requires Prometheus >= v2.15.0 or Thanos >= 0.24.0.\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 configuration for the URL.\n\n                        It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `sigv4`, `authorization`, `basicAuth`, or `azureAd`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    queueConfig:\n                      description: queueConfig allows tuning of the remote write queue parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: batchSendDeadline defines the maximum time a sample will wait in buffer.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        capacity:\n                          description: |-\n                            capacity defines the number of samples to buffer per shard before we start\n                            dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: maxBackoff defines the maximum retry delay.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        maxRetries:\n                          description: maxRetries defines the maximum number of times to retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: maxSamplesPerSend defines the maximum number of samples per send.\n                          type: integer\n                        maxShards:\n                          description: maxShards defines the maximum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: minBackoff defines the initial retry delay. Gets doubled for every retry.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        minShards:\n                          description: minShards defines the minimum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: |-\n                            retryOnRateLimit defines the retry upon receiving a 429 status code from the remote-write storage.\n\n                            This is an *experimental feature*, it may change in any upcoming release\n                            in a breaking way.\n                          type: boolean\n                        sampleAgeLimit:\n                          description: |-\n                            sampleAgeLimit drops samples older than the limit.\n                            It requires Prometheus >= v2.50.0 or Thanos >= v0.32.0.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    remoteTimeout:\n                      description: remoteTimeout defines the timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    roundRobinDNS:\n                      description: \"roundRobinDNS controls the DNS resolution behavior for remote-write connections.\\nWhen enabled:\\n  - The remote-write mechanism will resolve the hostname via DNS.\\n  - It will randomly select one of the resolved IP addresses and connect to it.\\n\\nWhen disabled (default behavior):\\n  - The Go standard library will handle hostname resolution.\\n  - It will attempt connections to each resolved IP address sequentially.\\n\\nNote: The connection timeout applies to the entire resolution and connection process.\\n\\n\\tIf disabled, the timeout is distributed across all connection attempts.\\n\\nIt requires Prometheus >= v3.1.0 or Thanos >= v0.38.0.\"\n                      type: boolean\n                    sendExemplars:\n                      description: |-\n                        sendExemplars enables sending of exemplars over remote write. Note that\n                        exemplar-storage itself must be enabled using the `spec.enableFeatures`\n                        option for exemplars to be scraped in the first place.\n\n                        It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0.\n                      type: boolean\n                    sendNativeHistograms:\n                      description: |-\n                        sendNativeHistograms enables sending of native histograms, also known as sparse histograms\n                        over remote write.\n\n                        It requires Prometheus >= v2.40.0 or Thanos >= v0.30.0.\n                      type: boolean\n                    sigv4:\n                      description: |-\n                        sigv4 defines the AWS's Signature Verification 4 for the URL.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `azureAd`.\n                      properties:\n                        accessKey:\n                          description: |-\n                            accessKey defines the AWS API key. If not specified, the environment variable\n                            `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: profile defines the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: region defines the AWS region. If blank, the region from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: roleArn defines the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: |-\n                            secretKey defines the AWS API secret. If not specified, the environment\n                            variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        useFIPSSTSEndpoint:\n                          description: |-\n                            useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint.\n                            It requires Prometheus >= v2.54.0.\n                          type: boolean\n                      type: object\n                    tlsConfig:\n                      description: tlsConfig to use for the URL.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: |-\n                        url defines the URL of the endpoint to send samples to.\n\n                        It must use the HTTP or HTTPS scheme.\n                      pattern: ^(http|https)://.+$\n                      type: string\n                    writeRelabelConfigs:\n                      description: writeRelabelConfigs defines the list of remote write relabel configurations.\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              remoteWriteReceiverMessageVersions:\n                description: |-\n                  remoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the\n                  remote writes.\n\n                  It requires Prometheus >= v2.54.0.\n                items:\n                  enum:\n                  - V1.0\n                  - V2.0\n                  type: string\n                minItems: 1\n                type: array\n                x-kubernetes-list-type: set\n              replicaExternalLabelName:\n                description: |-\n                  replicaExternalLabelName defines the name of Prometheus external label used to denote the replica name.\n                  The external label will _not_ be added when the field is set to the\n                  empty string (`\"\"`).\n\n                  Default: \"prometheus_replica\"\n                type: string\n              replicas:\n                description: |-\n                  replicas defines the number of replicas of each shard to deploy for a Prometheus deployment.\n                  `spec.replicas` multiplied by `spec.shards` is the total number of Pods\n                  created.\n\n                  Default: 1\n                format: int32\n                type: integer\n              resources:\n                description: resources defines the resources requests and limits of the 'prometheus' container.\n                properties:\n                  claims:\n                    description: |-\n                      Claims lists the names of resources, defined in spec.resourceClaims,\n                      that are used by this container.\n\n                      This field depends on the\n                      DynamicResourceAllocation feature gate.\n\n                      This field is immutable. It can only be set for containers.\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: |-\n                            Name must match the name of one entry in pod.spec.resourceClaims of\n                            the Pod where this field is used. It makes that resource available\n                            inside a container.\n                          type: string\n                        request:\n                          description: |-\n                            Request is the name chosen for a request in the referenced claim.\n                            If empty, everything from the claim is made available, otherwise\n                            only the result of this request.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Limits describes the maximum amount of compute resources allowed.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Requests describes the minimum amount of compute resources required.\n                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                type: object\n              retention:\n                description: |-\n                  retention defines how long to retain the Prometheus data.\n\n                  Default: \"24h\" if `spec.retention` and `spec.retentionSize` are empty.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              retentionSize:\n                description: retentionSize defines the maximum number of bytes used by the Prometheus data.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              routePrefix:\n                description: |-\n                  routePrefix defines the route prefix Prometheus registers HTTP handlers for.\n\n                  This is useful when using `spec.externalURL`, and a proxy is rewriting\n                  HTTP routes of a request, and the actual ExternalURL is still true, but\n                  the server serves requests under a different route prefix. For example\n                  for use with `kubectl proxy`.\n                type: string\n              ruleNamespaceSelector:\n                description: |-\n                  ruleNamespaceSelector defines the namespaces to match for PrometheusRule discovery. An empty label selector\n                  matches all namespaces. A null label selector matches the current\n                  namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleQueryOffset:\n                description: |-\n                  ruleQueryOffset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\n                  It requires Prometheus >= v2.53.0.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              ruleSelector:\n                description: |-\n                  ruleSelector defines the prometheusRule objects to be selected for rule evaluation. An empty\n                  label selector matches all objects. A null label selector matches no\n                  objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              rules:\n                description: rules defines the configuration of the Prometheus rules' engine.\n                properties:\n                  alert:\n                    description: |-\n                      alert defines the parameters of the Prometheus rules' engine.\n\n                      Any update to these parameters trigger a restart of the pods.\n                    properties:\n                      forGracePeriod:\n                        description: |-\n                          forGracePeriod defines the minimum duration between alert and restored 'for' state.\n\n                          This is maintained only for alerts with a configured 'for' time greater\n                          than the grace period.\n                        type: string\n                      forOutageTolerance:\n                        description: |-\n                          forOutageTolerance defines the max time to tolerate prometheus outage for restoring 'for' state of\n                          alert.\n                        type: string\n                      resendDelay:\n                        description: |-\n                          resendDelay defines the minimum amount of time to wait before resending an alert to\n                          Alertmanager.\n                        type: string\n                    type: object\n                type: object\n              runtime:\n                description: runtime defines the values for the Prometheus process behavior\n                properties:\n                  goGC:\n                    description: |-\n                      goGC defines the Go garbage collection target percentage. Lowering this number may increase the CPU usage.\n                      See: https://tip.golang.org/doc/gc-guide#GOGC\n                    format: int32\n                    minimum: -1\n                    type: integer\n                type: object\n              sampleLimit:\n                description: |-\n                  sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\n                format: int64\n                type: integer\n              schedulerName:\n                description: schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\n                minLength: 1\n                type: string\n              scrapeClasses:\n                description: |-\n                  scrapeClasses defines the list of scrape classes to expose to scraping objects such as\n                  PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\n\n                  This is an *experimental feature*, it may change in any upcoming release\n                  in a breaking way.\n                items:\n                  properties:\n                    attachMetadata:\n                      description: |-\n                        attachMetadata defines additional metadata to the discovered targets.\n                        When the scrape object defines its own configuration, it takes\n                        precedence over the scrape class configuration.\n                      properties:\n                        node:\n                          description: |-\n                            node when set to true, Prometheus attaches node metadata to the discovered\n                            targets.\n\n                            The Prometheus service account must have the `list` and `watch`\n                            permissions on the `Nodes` objects.\n                          type: boolean\n                      type: object\n                    authorization:\n                      description: |-\n                        authorization section for the ScrapeClass.\n                        It will only apply if the scrape resource doesn't specify any Authorization.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    default:\n                      description: |-\n                        default defines that the scrape applies to all scrape objects that\n                        don't configure an explicit scrape class name.\n\n                        Only one scrape class can be set as the default.\n                      type: boolean\n                    fallbackScrapeProtocol:\n                      description: |-\n                        fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\n                        It will only apply if the scrape resource doesn't specify any FallbackScrapeProtocol\n\n                        It requires Prometheus >= v3.0.0.\n                      enum:\n                      - PrometheusProto\n                      - OpenMetricsText0.0.1\n                      - OpenMetricsText1.0.0\n                      - PrometheusText0.0.4\n                      - PrometheusText1.0.0\n                      type: string\n                    metricRelabelings:\n                      description: |-\n                        metricRelabelings defines the relabeling rules to apply to all samples before ingestion.\n\n                        The Operator adds the scrape class metric relabelings defined here.\n                        Then the Operator adds the target-specific metric relabelings defined in ServiceMonitors, PodMonitors, Probes and ScrapeConfigs.\n                        Then the Operator adds namespace enforcement relabeling rule, specified in '.spec.enforcedNamespaceLabel'.\n\n                        More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    name:\n                      description: name of the scrape class.\n                      minLength: 1\n                      type: string\n                    relabelings:\n                      description: |-\n                        relabelings defines the relabeling rules to apply to all scrape targets.\n\n                        The Operator automatically adds relabelings for a few standard Kubernetes fields\n                        like `__meta_kubernetes_namespace` and `__meta_kubernetes_service_name`.\n                        Then the Operator adds the scrape class relabelings defined here.\n                        Then the Operator adds the target-specific relabelings defined in the scrape object.\n\n                        More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    tlsConfig:\n                      description: |-\n                        tlsConfig defines the TLS settings to use for the scrape. When the\n                        scrape objects define their own CA, certificate and/or key, they take\n                        precedence over the corresponding scrape class fields.\n\n                        For now only the `caFile`, `certFile` and `keyFile` fields are supported.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n              scrapeClassicHistograms:\n                description: |-\n                  scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\n\n                  Notice: `scrapeClassicHistograms` corresponds to the `always_scrape_classic_histograms` field in the Prometheus configuration.\n\n                  It requires Prometheus >= v3.5.0.\n                type: boolean\n              scrapeConfigNamespaceSelector:\n                description: |-\n                  scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\n                  matches all namespaces. A null label selector matches the current\n                  namespace only.\n\n                  Note that the ScrapeConfig custom resource definition is currently at Alpha level.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: |-\n                  scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\n                  selector matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n\n                  Note that the ScrapeConfig custom resource definition is currently at Alpha level.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeFailureLogFile:\n                description: |-\n                  scrapeFailureLogFile defines the file to which scrape failures are logged.\n                  Reloading the configuration will reopen the file.\n\n                  If the filename has an empty path, e.g. 'file.log', The Prometheus Pods\n                  will mount the file into an emptyDir volume at `/var/log/prometheus`.\n                  If a full path is provided, e.g. '/var/log/prometheus/file.log', you\n                  must mount a volume in the specified directory and it must be writable.\n                  It requires Prometheus >= v2.55.0.\n                minLength: 1\n                type: string\n              scrapeInterval:\n                default: 30s\n                description: |-\n                  scrapeInterval defines interval between consecutive scrapes.\n\n                  Default: \"30s\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeNativeHistograms:\n                description: |-\n                  scrapeNativeHistograms defines whether to enable scraping of native histograms.\n                  It requires Prometheus >= v3.8.0.\n                type: boolean\n              scrapeProtocols:\n                description: |-\n                  scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\n                  protocols supported by Prometheus in order of preference (from most to least preferred).\n\n                  If unset, Prometheus uses its default value.\n\n                  It requires Prometheus >= v2.49.0.\n\n                  `PrometheusText1.0.0` requires Prometheus >= v3.0.0.\n                items:\n                  description: |-\n                    ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\n                    Supported values are:\n                    * `OpenMetricsText0.0.1`\n                    * `OpenMetricsText1.0.0`\n                    * `PrometheusProto`\n                    * `PrometheusText0.0.4`\n                    * `PrometheusText1.0.0`\n                  enum:\n                  - PrometheusProto\n                  - OpenMetricsText0.0.1\n                  - OpenMetricsText1.0.0\n                  - PrometheusText0.0.4\n                  - PrometheusText1.0.0\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              scrapeTimeout:\n                description: |-\n                  scrapeTimeout defines the number of seconds to wait until a scrape request times out.\n                  The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: |-\n                  secrets defines a list of Secrets in the same namespace as the Prometheus\n                  object, which shall be mounted into the Prometheus Pods.\n                  Each Secret is added to the StatefulSet definition as a volume named `secret-<secret-name>`.\n                  The Secrets are mounted into /etc/prometheus/secrets/<secret-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              securityContext:\n                description: |-\n                  securityContext holds pod-level security attributes and common container settings.\n                  This defaults to the default PodSecurityContext.\n                properties:\n                  appArmorProfile:\n                    description: |-\n                      appArmorProfile is the AppArmor options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile loaded on the node that should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must match the loaded name of the profile.\n                          Must be set if and only if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of AppArmor profile will be applied.\n                          Valid options are:\n                            Localhost - a profile pre-loaded on the node.\n                            RuntimeDefault - the container runtime's default profile.\n                            Unconfined - no AppArmor enforcement.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  fsGroup:\n                    description: |-\n                      A special supplemental group that applies to all containers in a pod.\n                      Some volume types allow the Kubelet to change the ownership of that volume\n                      to be owned by the pod:\n\n                      1. The owning GID will be the FSGroup\n                      2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw----\n\n                      If unset, the Kubelet will not modify the ownership and permissions of any volume.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: |-\n                      fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\n                      before being exposed inside Pod. This field will only apply to\n                      volume types which support fsGroup based ownership(and permissions).\n                      It will have no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir.\n                      Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  runAsGroup:\n                    description: |-\n                      The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: |-\n                      Indicates that the container must run as a non-root user.\n                      If true, the Kubelet will validate the image at runtime to ensure that it\n                      does not run as UID 0 (root) and fail to start the container if it does.\n                      If unset or false, no such validation will be performed.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: |-\n                      The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxChangePolicy:\n                    description: |-\n                      seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.\n                      It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.\n                      Valid values are \"MountOption\" and \"Recursive\".\n\n                      \"Recursive\" means relabeling of all files on all Pod volumes by the container runtime.\n                      This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.\n\n                      \"MountOption\" mounts all eligible Pod volumes with `-o context` mount option.\n                      This requires all Pods that share the same volume to use the same SELinux label.\n                      It is not possible to share the same volume among privileged and unprivileged Pods.\n                      Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes\n                      whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their\n                      CSIDriver instance. Other volumes are always re-labelled recursively.\n                      \"MountOption\" value is allowed only when SELinuxMount feature gate is enabled.\n\n                      If not specified and SELinuxMount feature gate is enabled, \"MountOption\" is used.\n                      If not specified and SELinuxMount feature gate is disabled, \"MountOption\" is used for ReadWriteOncePod volumes\n                      and \"Recursive\" for all other volumes.\n\n                      This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.\n\n                      All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  seLinuxOptions:\n                    description: |-\n                      The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random SELinux context for each\n                      container.  May also be set in SecurityContext.  If set in\n                      both SecurityContext and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: |-\n                      The seccomp options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile defined in a file on the node should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                          Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of seccomp profile will be applied.\n                          Valid options are:\n\n                          Localhost - a profile defined in a file on the node should be used.\n                          RuntimeDefault - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: |-\n                      A list of groups applied to the first process run in each container, in\n                      addition to the container's primary GID and fsGroup (if specified).  If\n                      the SupplementalGroupsPolicy feature is enabled, the\n                      supplementalGroupsPolicy field determines whether these are in addition\n                      to or instead of any group memberships defined in the container image.\n                      If unspecified, no additional groups are added, though group memberships\n                      defined in the container image may still be used, depending on the\n                      supplementalGroupsPolicy field.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  supplementalGroupsPolicy:\n                    description: |-\n                      Defines how supplemental groups of the first container processes are calculated.\n                      Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used.\n                      (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled\n                      and the container runtime must implement support for this feature.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  sysctls:\n                    description: |-\n                      Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\n                      sysctls (by the container runtime) might fail to launch.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  windowsOptions:\n                    description: |-\n                      The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext will be used.\n                      If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                      Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: |-\n                          GMSACredentialSpec is where the GMSA admission webhook\n                          (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                          GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: |-\n                          HostProcess determines if a container should be run as a 'Host Process' container.\n                          All of a Pod's containers must have the same effective HostProcess value\n                          (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                          In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: |-\n                          The UserName in Windows to run the entrypoint of the container process.\n                          Defaults to the user specified in image metadata if unspecified.\n                          May also be set in PodSecurityContext. If set in both SecurityContext and\n                          PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: |-\n                  serviceAccountName is the name of the ServiceAccount to use to run the\n                  Prometheus Pods.\n                type: string\n              serviceDiscoveryRole:\n                description: |-\n                  serviceDiscoveryRole defines the service discovery role used to discover targets from\n                  `ServiceMonitor` objects and Alertmanager endpoints.\n\n                  If set, the value should be either \"Endpoints\" or \"EndpointSlice\".\n                  If unset, the operator assumes the \"Endpoints\" role.\n                enum:\n                - Endpoints\n                - EndpointSlice\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: |-\n                  serviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector\n                  matches all namespaces. A null label selector (default value) matches the current\n                  namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: |-\n                  serviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label\n                  selector matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceName:\n                description: |-\n                  serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\n                  If defined, the Service  must be created before the Prometheus/PrometheusAgent resource in the same namespace and it must define a selector that matches the pod labels.\n                  If empty, the operator will create and manage a headless service named `prometheus-operated` for Prometheus resources,\n                  or `prometheus-agent-operated` for PrometheusAgent resources.\n                  When deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each.\n                  See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\n                minLength: 1\n                type: string\n              sha:\n                description: 'sha is deprecated: use ''spec.image'' instead. The image''s digest can be specified as part of the image name.'\n                type: string\n              shardRetentionPolicy:\n                description: |-\n                  shardRetentionPolicy defines the retention policy for the Prometheus shards.\n                  (Alpha) Using this field requires the 'PrometheusShardRetentionPolicy' feature gate to be enabled.\n\n                  The final goals for this feature can be seen at https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202310-shard-autoscaling.md#graceful-scale-down-of-prometheus-servers,\n                  however, the feature is not yet fully implemented in this PR. The limitation being:\n                  * Retention duration is not settable, for now, shards are retained forever.\n                properties:\n                  retain:\n                    description: |-\n                      retain defines the config for retention when the retention policy is set to `Retain`.\n                      This field is ineffective as of now.\n                    properties:\n                      retentionPeriod:\n                        description: retentionPeriod defines the retentionPeriod for shard retention policy.\n                        pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                        type: string\n                    required:\n                    - retentionPeriod\n                    type: object\n                  whenScaled:\n                    description: |-\n                      whenScaled defines the retention policy when the Prometheus shards are scaled down.\n                      * `Delete`, the operator will delete the pods from the scaled-down shard(s).\n                      * `Retain`, the operator will keep the pods from the scaled-down shard(s), so the data can still be queried.\n\n                      If not defined, the operator assumes the `Delete` value.\n                    enum:\n                    - Retain\n                    - Delete\n                    type: string\n                type: object\n              shards:\n                description: |-\n                  shards defines the number of shards to distribute the scraped targets onto.\n\n                  `spec.replicas` multiplied by `spec.shards` is the total number of Pods\n                  being created.\n\n                  When not defined, the operator assumes only one shard.\n\n                  Note that scaling down shards will not reshard data onto the remaining\n                  instances, it must be manually moved. Increasing shards will not reshard\n                  data either but it will continue to be available from the same\n                  instances. To query globally, use either\n                  * Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n                  * Remote-write to send metrics to a central location.\n\n                  By default, the sharding of targets is performed on:\n                  * The `__address__` target's metadata label for PodMonitor,\n                  ServiceMonitor and ScrapeConfig resources.\n                  * The `__param_target__` label for Probe resources.\n\n                  Users can define their own sharding implementation by setting the\n                  `__tmp_hash` label during the target discovery with relabeling\n                  configuration (either in the monitoring resources or via scrape class).\n\n                  You can also disable sharding on a specific target by setting the\n                  `__tmp_disable_sharding` label with relabeling configuration. When\n                  the label value isn't empty, all Prometheus shards will scrape the target.\n                format: int32\n                type: integer\n              storage:\n                description: storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: 'disableMountSubPath deprecated: subPath usage will be removed in a future release.'\n                    type: boolean\n                  emptyDir:\n                    description: |-\n                      emptyDir to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\n                    properties:\n                      medium:\n                        description: |-\n                          medium represents what type of storage medium should back this directory.\n                          The default is \"\" which means to use the node's default medium.\n                          Must be an empty string (default) or Memory.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                          The size limit is also applicable for memory medium.\n                          The maximum usage on memory medium EmptyDir would be the minimum value between\n                          the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                          The default is nil which means that the limit is undefined.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: |-\n                      ephemeral to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15.\n                      For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate.\n                      More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes\n                    properties:\n                      volumeClaimTemplate:\n                        description: |-\n                          Will be used to create a stand-alone PVC to provision the volume.\n                          The pod in which this EphemeralVolumeSource is embedded will be the\n                          owner of the PVC, i.e. the PVC will be deleted together with the\n                          pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                          `<volume name>` is the name from the `PodSpec.Volumes` array\n                          entry. Pod validation will reject the pod if the concatenated name\n                          is not valid for a PVC (for example, too long).\n\n                          An existing PVC with that name that is not owned by the pod\n                          will *not* be used for the pod to avoid using an unrelated\n                          volume by mistake. Starting the pod is then blocked until\n                          the unrelated PVC is removed. If such a pre-created PVC is\n                          meant to be used by the pod, the PVC has to updated with an\n                          owner reference to the pod once the pod exists. Normally\n                          this should not be necessary, but it may be useful when\n                          manually reconstructing a broken cluster.\n\n                          This field is read-only and no changes will be made by Kubernetes\n                          to the PVC after it has been created.\n\n                          Required, must not be nil.\n                        properties:\n                          metadata:\n                            description: |-\n                              May contain labels and annotations that will be copied into the PVC\n                              when creating it. No other fields are allowed and will be rejected during\n                              validation.\n                            type: object\n                          spec:\n                            description: |-\n                              The specification for the PersistentVolumeClaim. The entire content is\n                              copied unchanged into the PVC that gets created from this\n                              template. The same fields as in a PersistentVolumeClaim\n                              are also valid here.\n                            properties:\n                              accessModes:\n                                description: |-\n                                  accessModes contains the desired access modes the volume should have.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              dataSource:\n                                description: |-\n                                  dataSource field can be used to specify either:\n                                  * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim)\n                                  If the provisioner or an external controller can support the specified data source,\n                                  it will create a new volume based on the contents of the specified data source.\n                                  When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                  and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                  If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: |-\n                                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a non-empty API group (non\n                                  core object) or a PersistentVolumeClaim object.\n                                  When this field is specified, volume binding will only succeed if the type of\n                                  the specified object matches some installed volume populator or dynamic\n                                  provisioner.\n                                  This field will replace the functionality of the dataSource field and as such\n                                  if both fields are non-empty, they must have the same value. For backwards\n                                  compatibility, when namespace isn't specified in dataSourceRef,\n                                  both fields (dataSource and dataSourceRef) will be set to the same\n                                  value automatically if one of them is empty and the other is non-empty.\n                                  When namespace is specified in dataSourceRef,\n                                  dataSource isn't set to the same value and must be empty.\n                                  There are three important differences between dataSource and dataSourceRef:\n                                  * While dataSource only allows two specific types of objects, dataSourceRef\n                                    allows any non-core object, as well as PersistentVolumeClaim objects.\n                                  * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                    preserves all values, and generates an error if a disallowed value is\n                                    specified.\n                                  * While dataSource only allows local objects, dataSourceRef allows objects\n                                    in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                  (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: |-\n                                      Namespace is the namespace of resource being referenced\n                                      Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                      (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: |-\n                                  resources represents the minimum resources the volume should have.\n                                  Users are allowed to specify resource requirements\n                                  that are lower than previous value but must still be higher than capacity recorded in the\n                                  status field of the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                properties:\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Limits describes the maximum amount of compute resources allowed.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Requests describes the minimum amount of compute resources required.\n                                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: |-\n                                        A label selector requirement is a selector that contains values, a key, and an operator that\n                                        relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: |-\n                                            operator represents a key's relationship to a set of values.\n                                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: |-\n                                            values is an array of string values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array is replaced during a strategic\n                                            merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: |-\n                                  storageClassName is the name of the StorageClass required by the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                type: string\n                              volumeAttributesClassName:\n                                description: |-\n                                  volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                  If specified, the CSI driver will create or update the volume with the attributes defined\n                                  in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                  it can be changed after the claim is created. An empty string or nil value indicates that no\n                                  VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                  this field can be reset to its previous value (including nil) to cancel the modification.\n                                  If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                  set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                  exists.\n                                  More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                type: string\n                              volumeMode:\n                                description: |-\n                                  volumeMode defines what type of volume is required by the claim.\n                                  Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: |-\n                      volumeClaimTemplate defines the PVC spec to be used by the Prometheus StatefulSets.\n                      The easiest way to use a volume that cannot be automatically provisioned\n                      is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: |-\n                          APIVersion defines the versioned schema of this representation of an object.\n                          Servers should convert recognized schemas to the latest internal value, and\n                          may reject unrecognized values.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n                        type: string\n                      kind:\n                        description: |-\n                          Kind is a string value representing the REST resource this object represents.\n                          Servers may infer this from the endpoint the client submits requests to.\n                          Cannot be updated.\n                          In CamelCase.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n                        type: string\n                      metadata:\n                        description: metadata defines EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              annotations defines an unstructured key value map stored with a resource that may be\n                              set by external tools to store and retrieve arbitrary metadata. They are not\n                              queryable and should be preserved when modifying objects.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              labels define the map of string keys and values that can be used to organize and categorize\n                              (scope and select) objects. May match selectors of replication controllers\n                              and services.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                            type: object\n                          name:\n                            description: |-\n                              name must be unique within a namespace. Is required when creating resources, although\n                              some resources may allow a client to request the generation of an appropriate name\n                              automatically. Name is primarily intended for creation idempotence and configuration\n                              definition.\n                              Cannot be updated.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                            type: string\n                        type: object\n                      spec:\n                        description: |-\n                          spec defines the specification of the  characteristics of a volume requested by a pod author.\n                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the desired access modes the volume should have.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          dataSource:\n                            description: |-\n                              dataSource field can be used to specify either:\n                              * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim)\n                              If the provisioner or an external controller can support the specified data source,\n                              it will create a new volume based on the contents of the specified data source.\n                              When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                              and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                              If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: |-\n                              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty API group (non\n                              core object) or a PersistentVolumeClaim object.\n                              When this field is specified, volume binding will only succeed if the type of\n                              the specified object matches some installed volume populator or dynamic\n                              provisioner.\n                              This field will replace the functionality of the dataSource field and as such\n                              if both fields are non-empty, they must have the same value. For backwards\n                              compatibility, when namespace isn't specified in dataSourceRef,\n                              both fields (dataSource and dataSourceRef) will be set to the same\n                              value automatically if one of them is empty and the other is non-empty.\n                              When namespace is specified in dataSourceRef,\n                              dataSource isn't set to the same value and must be empty.\n                              There are three important differences between dataSource and dataSourceRef:\n                              * While dataSource only allows two specific types of objects, dataSourceRef\n                                allows any non-core object, as well as PersistentVolumeClaim objects.\n                              * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                preserves all values, and generates an error if a disallowed value is\n                                specified.\n                              * While dataSource only allows local objects, dataSourceRef allows objects\n                                in any namespaces.\n                              (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                              (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: |-\n                                  Namespace is the namespace of resource being referenced\n                                  Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                  (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: |-\n                              resources represents the minimum resources the volume should have.\n                              Users are allowed to specify resource requirements\n                              that are lower than previous value but must still be higher than capacity recorded in the\n                              status field of the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                            properties:\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Limits describes the maximum amount of compute resources allowed.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Requests describes the minimum amount of compute resources required.\n                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: |-\n                                    A label selector requirement is a selector that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: |-\n                                        operator represents a key's relationship to a set of values.\n                                        Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: |-\n                                        values is an array of string values. If the operator is In or NotIn,\n                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                        the values array must be empty. This array is replaced during a strategic\n                                        merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: |-\n                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                  map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                  operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: |-\n                              storageClassName is the name of the StorageClass required by the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                            type: string\n                          volumeAttributesClassName:\n                            description: |-\n                              volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                              If specified, the CSI driver will create or update the volume with the attributes defined\n                              in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                              it can be changed after the claim is created. An empty string or nil value indicates that no\n                              VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                              this field can be reset to its previous value (including nil) to cancel the modification.\n                              If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                              set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                              exists.\n                              More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                            type: string\n                          volumeMode:\n                            description: |-\n                              volumeMode defines what type of volume is required by the claim.\n                              Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: 'status is deprecated: this field is never set.'\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the actual access modes the volume backing the PVC has.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          allocatedResourceStatuses:\n                            additionalProperties:\n                              description: |-\n                                When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\n                                that it does not recognizes, then it should ignore that update and let other controllers\n                                handle it.\n                              type: string\n                            description: \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                            x-kubernetes-map-type: granular\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: |-\n                              conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'Resizing'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: |-\n                                    reason is a unique, this should be a short, machine understandable string that gives the reason\n                                    for condition's last transition. If it reports \"Resizing\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  description: |-\n                                    Status is the status of the condition.\n                                    Can be True, False, Unknown.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required\n                                  type: string\n                                type:\n                                  description: |-\n                                    Type is the type of the condition.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                            x-kubernetes-list-map-keys:\n                            - type\n                            x-kubernetes-list-type: map\n                          currentVolumeAttributesClassName:\n                            description: |-\n                              currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\n                              When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\n                            type: string\n                          modifyVolumeStatus:\n                            description: |-\n                              ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\n                              When this is unset, there is no ModifyVolume operation being attempted.\n                            properties:\n                              status:\n                                description: \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n   Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n   the specified VolumeAttributesClass not existing.\\n - InProgress\\n   InProgress indicates that the volume is being modified.\\n - Infeasible\\n  Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t  resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\"\n                                type: string\n                              targetVolumeAttributesClassName:\n                                description: targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\n                                type: string\n                            required:\n                            - status\n                            type: object\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: 'tag is deprecated: use ''spec.image'' instead. The image''s tag can be specified as part of the image name.'\n                type: string\n              targetLimit:\n                description: |-\n                  targetLimit defines a limit on the number of scraped targets that will be accepted.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\n                format: int64\n                type: integer\n              terminationGracePeriodSeconds:\n                description: |-\n                  terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\n                  Value must be non-negative integer. The value zero indicates stop immediately via\n                  the kill signal (no opportunity to shut down) which may lead to data corruption.\n\n                  Defaults to 600 seconds.\n                format: int64\n                minimum: 0\n                type: integer\n              thanos:\n                description: thanos defines the configuration of the optional Thanos sidecar.\n                properties:\n                  additionalArgs:\n                    description: |-\n                      additionalArgs allows setting additional arguments for the Thanos container.\n                      The arguments are passed as-is to the Thanos container which may cause issues\n                      if they are invalid or not supported the given Thanos version.\n                      In case of an argument conflict (e.g. an argument which is already set by the\n                      operator itself) or when providing an invalid argument, the reconciliation will\n                      fail and an error will be logged.\n                    items:\n                      description: Argument as part of the AdditionalArgs list.\n                      properties:\n                        name:\n                          description: name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                          minLength: 1\n                          type: string\n                        value:\n                          description: value defines the argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  baseImage:\n                    description: 'baseImage is deprecated: use ''image'' instead.'\n                    type: string\n                  blockSize:\n                    default: 2h\n                    description: |-\n                      blockSize controls the size of TSDB blocks produced by Prometheus.\n                      The default value is 2h to match the upstream Prometheus defaults.\n\n                      WARNING: Changing the block duration can impact the performance and\n                      efficiency of the entire Prometheus/Thanos stack due to how it interacts\n                      with memory and Thanos compactors. It is recommended to keep this value\n                      set to a multiple of 120 times your longest scrape or rule interval. For\n                      example, 30s * 120 = 1h.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigInterval:\n                    description: getConfigInterval defines how often to retrieve the Prometheus configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigTimeout:\n                    description: getConfigTimeout defines the maximum time to wait when retrieving the Prometheus configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  grpcListenLocal:\n                    description: |-\n                      grpcListenLocal defines when true, the Thanos sidecar listens on the loopback interface instead\n                      of the Pod IP's address for the gRPC endpoints.\n\n                      It has no effect if `listenLocal` is true.\n                    type: boolean\n                  grpcServerTlsConfig:\n                    description: |-\n                      grpcServerTlsConfig defines the TLS parameters for the gRPC server providing the StoreAPI.\n\n                      Note: Currently only the `minVersion`, `caFile`, `certFile`, and `keyFile` fields are supported.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                  httpListenLocal:\n                    description: |-\n                      httpListenLocal when true, the Thanos sidecar listens on the loopback interface instead\n                      of the Pod IP's address for the HTTP endpoints.\n\n                      It has no effect if `listenLocal` is true.\n                    type: boolean\n                  image:\n                    description: |-\n                      image defines the container image name for Thanos. If specified, it takes precedence over\n                      the `spec.thanos.baseImage`, `spec.thanos.tag` and `spec.thanos.sha`\n                      fields.\n\n                      Specifying `spec.thanos.version` is still necessary to ensure the\n                      Prometheus Operator knows which version of Thanos is being configured.\n\n                      If neither `spec.thanos.image` nor `spec.thanos.baseImage` are defined,\n                      the operator will use the latest upstream version of Thanos available at\n                      the time when the operator was released.\n                    type: string\n                  listenLocal:\n                    description: 'listenLocal is deprecated: use `grpcListenLocal` and `httpListenLocal` instead.'\n                    type: boolean\n                  logFormat:\n                    description: logFormat for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - logfmt\n                    - json\n                    type: string\n                  logLevel:\n                    description: logLevel for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - debug\n                    - info\n                    - warn\n                    - error\n                    type: string\n                  minTime:\n                    description: |-\n                      minTime defines the start of time range limit served by the Thanos sidecar's StoreAPI.\n                      The field's value should be a constant time in RFC3339 format or a time\n                      duration relative to current time, such as -1d or 2h45m. Valid duration\n                      units are ms, s, m, h, d, w, y.\n                    type: string\n                  objectStorageConfig:\n                    description: |-\n                      objectStorageConfig defines the Thanos sidecar's configuration to upload TSDB blocks to object storage.\n\n                      More info: https://thanos.io/tip/thanos/storage.md/\n\n                      objectStorageConfigFile takes precedence over this field.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  objectStorageConfigFile:\n                    description: |-\n                      objectStorageConfigFile defines the Thanos sidecar's configuration file to upload TSDB blocks to object storage.\n\n                      More info: https://thanos.io/tip/thanos/storage.md/\n\n                      This field takes precedence over objectStorageConfig.\n                    type: string\n                  readyTimeout:\n                    description: |-\n                      readyTimeout defines the maximum time that the Thanos sidecar will wait for\n                      Prometheus to start.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  resources:\n                    description: resources defines the resources requests and limits of the Thanos sidecar.\n                    properties:\n                      claims:\n                        description: |-\n                          Claims lists the names of resources, defined in spec.resourceClaims,\n                          that are used by this container.\n\n                          This field depends on the\n                          DynamicResourceAllocation feature gate.\n\n                          This field is immutable. It can only be set for containers.\n                        items:\n                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                          properties:\n                            name:\n                              description: |-\n                                Name must match the name of one entry in pod.spec.resourceClaims of\n                                the Pod where this field is used. It makes that resource available\n                                inside a container.\n                              type: string\n                            request:\n                              description: |-\n                                Request is the name chosen for a request in the referenced claim.\n                                If empty, everything from the claim is made available, otherwise\n                                only the result of this request.\n                              type: string\n                          required:\n                          - name\n                          type: object\n                        type: array\n                        x-kubernetes-list-map-keys:\n                        - name\n                        x-kubernetes-list-type: map\n                      limits:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: |-\n                          Limits describes the maximum amount of compute resources allowed.\n                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                        type: object\n                      requests:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: |-\n                          Requests describes the minimum amount of compute resources required.\n                          If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                          otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                        type: object\n                    type: object\n                  sha:\n                    description: 'sha is deprecated: use ''image'' instead.  The image digest can be specified as part of the image name.'\n                    type: string\n                  tag:\n                    description: 'tag is deprecated: use ''image'' instead. The image''s tag can be specified as as part of the image name.'\n                    type: string\n                  tracingConfig:\n                    description: |-\n                      tracingConfig defines the tracing configuration for the Thanos sidecar.\n\n                      `tracingConfigFile` takes precedence over this field.\n\n                      More info: https://thanos.io/tip/thanos/tracing.md/\n\n                      This is an *experimental feature*, it may change in any upcoming release\n                      in a breaking way.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  tracingConfigFile:\n                    description: |-\n                      tracingConfigFile defines the tracing configuration file for the Thanos sidecar.\n\n                      This field takes precedence over `tracingConfig`.\n\n                      More info: https://thanos.io/tip/thanos/tracing.md/\n\n                      This is an *experimental feature*, it may change in any upcoming release\n                      in a breaking way.\n                    type: string\n                  version:\n                    description: |-\n                      version of Thanos being deployed. The operator uses this information\n                      to generate the Prometheus StatefulSet + configuration files.\n\n                      If not specified, the operator assumes the latest upstream release of\n                      Thanos available at the time when the version of the operator was\n                      released.\n                    type: string\n                  volumeMounts:\n                    description: |-\n                      volumeMounts allows configuration of additional VolumeMounts for Thanos.\n                      VolumeMounts specified will be appended to other VolumeMounts in the\n                      'thanos-sidecar' container.\n                    items:\n                      description: VolumeMount describes a mounting of a Volume within a container.\n                      properties:\n                        mountPath:\n                          description: |-\n                            Path within the container at which the volume should be mounted.  Must\n                            not contain ':'.\n                          type: string\n                        mountPropagation:\n                          description: |-\n                            mountPropagation determines how mounts are propagated from the host\n                            to container and the other way around.\n                            When not set, MountPropagationNone is used.\n                            This field is beta in 1.10.\n                            When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                            (which defaults to None).\n                          type: string\n                        name:\n                          description: This must match the Name of a Volume.\n                          type: string\n                        readOnly:\n                          description: |-\n                            Mounted read-only if true, read-write otherwise (false or unspecified).\n                            Defaults to false.\n                          type: boolean\n                        recursiveReadOnly:\n                          description: |-\n                            RecursiveReadOnly specifies whether read-only mounts should be handled\n                            recursively.\n\n                            If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                            If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                            recursively read-only.  If this field is set to IfPossible, the mount is made\n                            recursively read-only, if it is supported by the container runtime.  If this\n                            field is set to Enabled, the mount is made recursively read-only if it is\n                            supported by the container runtime, otherwise the pod will not be started and\n                            an error will be generated to indicate the reason.\n\n                            If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                            None (or be unspecified, which defaults to None).\n\n                            If this field is not specified, it is treated as an equivalent of Disabled.\n                          type: string\n                        subPath:\n                          description: |-\n                            Path within the volume from which the container's volume should be mounted.\n                            Defaults to \"\" (volume's root).\n                          type: string\n                        subPathExpr:\n                          description: |-\n                            Expanded path within the volume from which the container's volume should be mounted.\n                            Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                            Defaults to \"\" (volume's root).\n                            SubPathExpr and SubPath are mutually exclusive.\n                          type: string\n                      required:\n                      - mountPath\n                      - name\n                      type: object\n                    type: array\n                type: object\n              tolerations:\n                description: tolerations defines the Pods' tolerations if specified.\n                items:\n                  description: |-\n                    The pod this Toleration is attached to tolerates any taint that matches\n                    the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: |-\n                        Effect indicates the taint effect to match. Empty means match all taint effects.\n                        When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: |-\n                        Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                        If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: |-\n                        Operator represents a key's relationship to the value.\n                        Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod can\n                        tolerate all taints of a particular category.\n                        Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).\n                      type: string\n                    tolerationSeconds:\n                      description: |-\n                        TolerationSeconds represents the period of time the toleration (which must be\n                        of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                        it is not set, which means tolerate the taint forever (do not evict). Zero and\n                        negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: |-\n                        Value is the taint value the toleration matches to.\n                        If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: topologySpreadConstraints defines the pod's topology spread constraints if specified.\n                items:\n                  properties:\n                    additionalLabelSelectors:\n                      description: additionalLabelSelectors Defines what Prometheus Operator managed labels should be added to labelSelector on the topologySpreadConstraint.\n                      enum:\n                      - OnResource\n                      - OnShard\n                      type: string\n                    labelSelector:\n                      description: |-\n                        LabelSelector is used to find matching pods.\n                        Pods that match this label selector are counted to determine the number of pods\n                        in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: |-\n                              A label selector requirement is a selector that contains values, a key, and an operator that\n                              relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: |-\n                                  operator represents a key's relationship to a set of values.\n                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: |-\n                                  values is an array of string values. If the operator is In or NotIn,\n                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                  the values array must be empty. This array is replaced during a strategic\n                                  merge patch.\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: |-\n                        MatchLabelKeys is a set of pod label keys to select the pods over which\n                        spreading will be calculated. The keys are used to lookup values from the\n                        incoming pod labels, those key-value labels are ANDed with labelSelector\n                        to select the group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\n                        MatchLabelKeys cannot be set when LabelSelector isn't set.\n                        Keys that don't exist in the incoming pod labels will\n                        be ignored. A null or empty list means only match against labelSelector.\n\n                        This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: |-\n                        MaxSkew describes the degree to which pods may be unevenly distributed.\n                        When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\n                        between the number of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods in an eligible domain\n                        or zero if the number of eligible domains is less than MinDomains.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 2/2/1:\n                        In this case, the global minimum is 1.\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |   P   |\n                        - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\n                        scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\n                        violate MaxSkew(1).\n                        - if MaxSkew is 2, incoming pod can be scheduled onto any zone.\n                        When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\n                        to topologies that satisfy it.\n                        It's a required field. Default value is 1 and 0 is not allowed.\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: |-\n                        MinDomains indicates a minimum number of eligible domains.\n                        When the number of eligible domains with matching topology keys is less than minDomains,\n                        Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed.\n                        And when the number of eligible domains with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling.\n                        As a result, when the number of eligible domains is less than minDomains,\n                        scheduler won't schedule more than maxSkew Pods to those domains.\n                        If value is nil, the constraint behaves as if MinDomains is equal to 1.\n                        Valid values are integers greater than 0.\n                        When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\n                        For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\n                        labelSelector spread as 2/2/2:\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0.\n                        In this situation, new pod with the same labelSelector cannot be scheduled,\n                        because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\n                        it will violate MaxSkew.\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: |-\n                        NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\n                        when calculating pod topology spread skew. Options are:\n                        - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\n                        - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\n                        If this value is nil, the behavior is equivalent to the Honor policy.\n                      type: string\n                    nodeTaintsPolicy:\n                      description: |-\n                        NodeTaintsPolicy indicates how we will treat node taints when calculating\n                        pod topology spread skew. Options are:\n                        - Honor: nodes without taints, along with tainted nodes for which the incoming pod\n                        has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n\n                        If this value is nil, the behavior is equivalent to the Ignore policy.\n                      type: string\n                    topologyKey:\n                      description: |-\n                        TopologyKey is the key of node labels. Nodes that have a label with this key\n                        and identical values are considered to be in the same topology.\n                        We consider each <key, value> as a \"bucket\", and try to put balanced number\n                        of pods into each bucket.\n                        We define a domain as a particular instance of a topology.\n                        Also, we define an eligible domain as a domain whose nodes meet the requirements of\n                        nodeAffinityPolicy and nodeTaintsPolicy.\n                        e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology.\n                        And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology.\n                        It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: |-\n                        WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\n                        the spread constraint.\n                        - DoNotSchedule (default) tells the scheduler not to schedule it.\n                        - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n                          but giving higher precedence to topologies that would help reduce the\n                          skew.\n                        A constraint is considered \"Unsatisfiable\" for an incoming pod\n                        if and only if every possible node assignment for that pod would violate\n                        \"MaxSkew\" on some topology.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 3/1/1:\n                        | zone1 | zone2 | zone3 |\n                        | P P P |   P   |   P   |\n                        If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\n                        to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\n                        MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\n                        won't make it *more* imbalanced.\n                        It's a required field.\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: |-\n                  tracingConfig defines tracing in Prometheus.\n\n                  This is an *experimental feature*, it may change in any upcoming release\n                  in a breaking way.\n                properties:\n                  clientType:\n                    description: clientType defines the client used to export the traces. Supported values are `HTTP` and `GRPC`.\n                    enum:\n                    - http\n                    - grpc\n                    - HTTP\n                    - GRPC\n                    type: string\n                  compression:\n                    description: compression key for supported compression types. The only supported value is `Gzip`.\n                    enum:\n                    - gzip\n                    - Gzip\n                    type: string\n                  endpoint:\n                    description: endpoint to send the traces to. Should be provided in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: headers defines the key-value pairs to be used as headers associated with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: insecure if disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: samplingFraction defines the probability a given trace will be sampled. Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: timeout defines the maximum time the exporter will wait for each batch export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: tlsConfig to use when sending traces.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              tsdb:\n                description: |-\n                  tsdb defines the runtime reloadable configuration of the timeseries database(TSDB).\n                  It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.\n                properties:\n                  outOfOrderTimeWindow:\n                    description: |-\n                      outOfOrderTimeWindow defines how old an out-of-order/out-of-bounds sample can be with\n                      respect to the TSDB max time.\n\n                      An out-of-order/out-of-bounds sample is ingested into the TSDB as long as\n                      the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).\n\n                      This is an *experimental feature*, it may change in any upcoming release\n                      in a breaking way.\n\n                      It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              updateStrategy:\n                description: |-\n                  updateStrategy indicates the strategy that will be employed to update\n                  Pods in the StatefulSet when a revision is made to statefulset's Pod\n                  Template.\n\n                  The default strategy is RollingUpdate.\n                properties:\n                  rollingUpdate:\n                    description: rollingUpdate is used to communicate parameters when type is RollingUpdate.\n                    properties:\n                      maxUnavailable:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          maxUnavailable is the maximum number of pods that can be unavailable\n                          during the update. The value can be an absolute number (ex: 5) or a\n                          percentage of desired pods (ex: 10%). Absolute number is calculated from\n                          percentage by rounding up. This can not be 0.  Defaults to 1. This field\n                          is alpha-level and is only honored by servers that enable the\n                          MaxUnavailableStatefulSet feature. The field applies to all pods in the\n                          range 0 to Replicas-1.  That means if there is any unavailable pod in\n                          the range 0 to Replicas-1, it will be counted towards MaxUnavailable.\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  type:\n                    description: |-\n                      type indicates the type of the StatefulSetUpdateStrategy.\n\n                      Default is RollingUpdate.\n                    enum:\n                    - OnDelete\n                    - RollingUpdate\n                    type: string\n                required:\n                - type\n                type: object\n                x-kubernetes-validations:\n                - message: rollingUpdate requires type to be RollingUpdate\n                  rule: '!(self.type != ''RollingUpdate'' && has(self.rollingUpdate))'\n              version:\n                description: |-\n                  version of Prometheus being deployed. The operator uses this information\n                  to generate the Prometheus StatefulSet + configuration files.\n\n                  If not specified, the operator assumes the latest upstream version of\n                  Prometheus available at the time when the version of the operator was\n                  released.\n                type: string\n              volumeMounts:\n                description: |-\n                  volumeMounts allows the configuration of additional VolumeMounts.\n\n                  VolumeMounts will be appended to other VolumeMounts in the 'prometheus'\n                  container, that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: |-\n                        Path within the container at which the volume should be mounted.  Must\n                        not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: |-\n                        mountPropagation determines how mounts are propagated from the host\n                        to container and the other way around.\n                        When not set, MountPropagationNone is used.\n                        This field is beta in 1.10.\n                        When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                        (which defaults to None).\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: |-\n                        Mounted read-only if true, read-write otherwise (false or unspecified).\n                        Defaults to false.\n                      type: boolean\n                    recursiveReadOnly:\n                      description: |-\n                        RecursiveReadOnly specifies whether read-only mounts should be handled\n                        recursively.\n\n                        If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                        If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                        recursively read-only.  If this field is set to IfPossible, the mount is made\n                        recursively read-only, if it is supported by the container runtime.  If this\n                        field is set to Enabled, the mount is made recursively read-only if it is\n                        supported by the container runtime, otherwise the pod will not be started and\n                        an error will be generated to indicate the reason.\n\n                        If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                        None (or be unspecified, which defaults to None).\n\n                        If this field is not specified, it is treated as an equivalent of Disabled.\n                      type: string\n                    subPath:\n                      description: |-\n                        Path within the volume from which the container's volume should be mounted.\n                        Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: |-\n                        Expanded path within the volume from which the container's volume should be mounted.\n                        Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                        Defaults to \"\" (volume's root).\n                        SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: |-\n                  volumes allows the configuration of additional volumes on the output\n                  StatefulSet definition. Volumes specified will be appended to other\n                  volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: |-\n                        awsElasticBlockStore represents an AWS Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree\n                        awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly value true will force the readOnly setting in VolumeMounts.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: boolean\n                        volumeID:\n                          description: |-\n                            volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: |-\n                        azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                        Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type\n                        are redirected to the disk.csi.azure.com CSI driver.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          default: ext4\n                          description: |-\n                            fsType is Filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          default: false\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: |-\n                        azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                        Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type\n                        are redirected to the file.csi.azure.com CSI driver.\n                      properties:\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: |-\n                        cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.\n                        Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.\n                      properties:\n                        monitors:\n                          description: |-\n                            monitors is Required: Monitors is a collection of Ceph monitors\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: boolean\n                        secretFile:\n                          description: |-\n                            secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: |-\n                            user is optional: User is the rados user name, default is admin\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: |-\n                        cinder represents a cinder volume attached and mounted on kubelets host machine.\n                        Deprecated: Cinder is deprecated. All operations for the in-tree cinder type\n                        are redirected to the cinder.csi.openstack.org CSI driver.\n                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is optional: points to a secret object containing parameters used to connect\n                            to OpenStack.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: |-\n                            volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items if unspecified, each key-value pair in the Data field of the referenced\n                            ConfigMap will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the ConfigMap,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers.\n                      properties:\n                        driver:\n                          description: |-\n                            driver is the name of the CSI driver that handles this volume.\n                            Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated CSI driver\n                            which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: |-\n                            nodePublishSecretRef is a reference to the secret object containing\n                            sensitive information to pass to the CSI driver to complete the CSI\n                            NodePublishVolume and NodeUnpublishVolume calls.\n                            This field is optional, and  may be empty if no secret is required. If the\n                            secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly specifies a read-only configuration for the volume.\n                            Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            volumeAttributes stores driver-specific properties that are passed to the CSI\n                            driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            Optional: mode bits to use on created files by default. Must be a\n                            Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: |-\n                                  Optional: mode bits used to set permissions on this file, must be an octal value\n                                  between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    emptyDir:\n                      description: |-\n                        emptyDir represents a temporary directory that shares a pod's lifetime.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                      properties:\n                        medium:\n                          description: |-\n                            medium represents what type of storage medium should back this directory.\n                            The default is \"\" which means to use the node's default medium.\n                            Must be an empty string (default) or Memory.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: |-\n                            sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                            The size limit is also applicable for memory medium.\n                            The maximum usage on memory medium EmptyDir would be the minimum value between\n                            the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                            The default is nil which means that the limit is undefined.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: |-\n                        ephemeral represents a volume that is handled by a cluster storage driver.\n                        The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\n                        and deleted when the pod is removed.\n\n                        Use this if:\n                        a) the volume is only needed while the pod runs,\n                        b) features of normal volumes like restoring from snapshot or capacity\n                           tracking are needed,\n                        c) the storage driver is specified through a storage class, and\n                        d) the storage driver supports dynamic volume provisioning through\n                           a PersistentVolumeClaim (see EphemeralVolumeSource for more\n                           information on the connection between this volume type\n                           and PersistentVolumeClaim).\n\n                        Use PersistentVolumeClaim or one of the vendor-specific\n                        APIs for volumes that persist for longer than the lifecycle\n                        of an individual pod.\n\n                        Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to\n                        be used that way - see the documentation of the driver for\n                        more information.\n\n                        A pod can use both types of ephemeral volumes and\n                        persistent volumes at the same time.\n                      properties:\n                        volumeClaimTemplate:\n                          description: |-\n                            Will be used to create a stand-alone PVC to provision the volume.\n                            The pod in which this EphemeralVolumeSource is embedded will be the\n                            owner of the PVC, i.e. the PVC will be deleted together with the\n                            pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                            `<volume name>` is the name from the `PodSpec.Volumes` array\n                            entry. Pod validation will reject the pod if the concatenated name\n                            is not valid for a PVC (for example, too long).\n\n                            An existing PVC with that name that is not owned by the pod\n                            will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC is\n                            meant to be used by the pod, the PVC has to updated with an\n                            owner reference to the pod once the pod exists. Normally\n                            this should not be necessary, but it may be useful when\n                            manually reconstructing a broken cluster.\n\n                            This field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created.\n\n                            Required, must not be nil.\n                          properties:\n                            metadata:\n                              description: |-\n                                May contain labels and annotations that will be copied into the PVC\n                                when creating it. No other fields are allowed and will be rejected during\n                                validation.\n                              type: object\n                            spec:\n                              description: |-\n                                The specification for the PersistentVolumeClaim. The entire content is\n                                copied unchanged into the PVC that gets created from this\n                                template. The same fields as in a PersistentVolumeClaim\n                                are also valid here.\n                              properties:\n                                accessModes:\n                                  description: |-\n                                    accessModes contains the desired access modes the volume should have.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                dataSource:\n                                  description: |-\n                                    dataSource field can be used to specify either:\n                                    * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim)\n                                    If the provisioner or an external controller can support the specified data source,\n                                    it will create a new volume based on the contents of the specified data source.\n                                    When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                    and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                    If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: |-\n                                    dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                    volume is desired. This may be any object from a non-empty API group (non\n                                    core object) or a PersistentVolumeClaim object.\n                                    When this field is specified, volume binding will only succeed if the type of\n                                    the specified object matches some installed volume populator or dynamic\n                                    provisioner.\n                                    This field will replace the functionality of the dataSource field and as such\n                                    if both fields are non-empty, they must have the same value. For backwards\n                                    compatibility, when namespace isn't specified in dataSourceRef,\n                                    both fields (dataSource and dataSourceRef) will be set to the same\n                                    value automatically if one of them is empty and the other is non-empty.\n                                    When namespace is specified in dataSourceRef,\n                                    dataSource isn't set to the same value and must be empty.\n                                    There are three important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types of objects, dataSourceRef\n                                      allows any non-core object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                      preserves all values, and generates an error if a disallowed value is\n                                      specified.\n                                    * While dataSource only allows local objects, dataSourceRef allows objects\n                                      in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                    (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: |-\n                                        Namespace is the namespace of resource being referenced\n                                        Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                        (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: |-\n                                    resources represents the minimum resources the volume should have.\n                                    Users are allowed to specify resource requirements\n                                    that are lower than previous value but must still be higher than capacity recorded in the\n                                    status field of the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                  properties:\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Limits describes the maximum amount of compute resources allowed.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Requests describes the minimum amount of compute resources required.\n                                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                        otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: |-\n                                    storageClassName is the name of the StorageClass required by the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                  type: string\n                                volumeAttributesClassName:\n                                  description: |-\n                                    volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                    If specified, the CSI driver will create or update the volume with the attributes defined\n                                    in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                    it can be changed after the claim is created. An empty string or nil value indicates that no\n                                    VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                    this field can be reset to its previous value (including nil) to cancel the modification.\n                                    If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                    set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                    exists.\n                                    More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                  type: string\n                                volumeMode:\n                                  description: |-\n                                    volumeMode defines what type of volume is required by the claim.\n                                    Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        wwids:\n                          description: |-\n                            wwids Optional: FC volume world wide identifiers (wwids)\n                            Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    flexVolume:\n                      description: |-\n                        flexVolume represents a generic volume resource that is\n                        provisioned/attached using an exec based plugin.\n                        Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: secretRef is reference to the secret object containing\n                            sensitive information to pass to the plugin scripts. This may be\n                            empty if no secret object is specified. If the secret object\n                            contains more than one secret, all secrets are passed to the plugin\n                            scripts.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: |-\n                        flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.\n                        Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.\n                      properties:\n                        datasetName:\n                          description: |-\n                            datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker\n                            should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: |-\n                        gcePersistentDisk represents a GCE Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree\n                        gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: |-\n                            pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: |-\n                        gitRepo represents a git repository at a particular revision.\n                        Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an\n                        EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\n                        into the Pod's container.\n                      properties:\n                        directory:\n                          description: |-\n                            directory is the target directory name.\n                            Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the\n                            git repository.  Otherwise, if specified, the volume will contain the git repository in\n                            the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: |-\n                        glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\n                        Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.\n                      properties:\n                        endpoints:\n                          description: endpoints is the endpoint name that details Glusterfs topology.\n                          type: string\n                        path:\n                          description: |-\n                            path is the Glusterfs volume path.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: |-\n                        hostPath represents a pre-existing file or directory on the host\n                        machine that is directly exposed to the container. This is generally\n                        used for system agents or other privileged things that are allowed\n                        to see the host machine. Most containers will NOT need this.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                      properties:\n                        path:\n                          description: |-\n                            path of the directory on the host.\n                            If the path is a symlink, it will follow the link to the real path.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                        type:\n                          description: |-\n                            type for HostPath Volume\n                            Defaults to \"\"\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    image:\n                      description: |-\n                        image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.\n                        The volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n                        - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                        - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                        - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\n                        The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.\n                        A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.\n                        The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.\n                        The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.\n                        The volume will be mounted read-only (ro) and non-executable files (noexec).\n                        Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.\n                        The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.\n                      properties:\n                        pullPolicy:\n                          description: |-\n                            Policy for pulling OCI objects. Possible values are:\n                            Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                            Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                            IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n                            Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                          type: string\n                        reference:\n                          description: |-\n                            Required: Image or artifact reference to be used.\n                            Behaves in the same way as pod.spec.containers[*].image.\n                            Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.\n                            More info: https://kubernetes.io/docs/concepts/containers/images\n                            This field is optional to allow higher level config management to default or override\n                            container images in workload controllers like Deployments and StatefulSets.\n                          type: string\n                      type: object\n                    iscsi:\n                      description: |-\n                        iscsi represents an ISCSI Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                          type: string\n                        initiatorName:\n                          description: |-\n                            initiatorName is the custom iSCSI Initiator Name.\n                            If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n                            <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          default: default\n                          description: |-\n                            iscsiInterface is the interface Name that uses an iSCSI transport.\n                            Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: |-\n                            portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: |-\n                            targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: |-\n                        name of the volume.\n                        Must be a DNS_LABEL and unique within the pod.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                    nfs:\n                      description: |-\n                        nfs represents an NFS mount on the host that shares a pod's lifetime\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                      properties:\n                        path:\n                          description: |-\n                            path that is exported by the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the NFS export to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: boolean\n                        server:\n                          description: |-\n                            server is the hostname or IP address of the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: |-\n                        persistentVolumeClaimVolumeSource represents a reference to a\n                        PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                      properties:\n                        claimName:\n                          description: |-\n                            claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\n                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Will force the ReadOnly setting in VolumeMounts.\n                            Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: |-\n                        photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.\n                        Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: |-\n                        portworxVolume represents a portworx volume attached and mounted on kubelets host machine.\n                        Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type\n                        are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate\n                        is on.\n                      properties:\n                        fsType:\n                          description: |-\n                            fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode are the mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: |-\n                            sources is the list of volume projections. Each entry in this list\n                            handles one source.\n                          items:\n                            description: |-\n                              Projection that may be projected along with other supported volume types.\n                              Exactly one of these fields must be set.\n                            properties:\n                              clusterTrustBundle:\n                                description: |-\n                                  ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\n                                  of ClusterTrustBundle objects in an auto-updating file.\n\n                                  Alpha, gated by the ClusterTrustBundleProjection feature gate.\n\n                                  ClusterTrustBundle objects can either be selected by name, or by the\n                                  combination of signer name and a label selector.\n\n                                  Kubelet performs aggressive normalization of the PEM contents written\n                                  into the pod filesystem.  Esoteric PEM features such as inter-block\n                                  comments and block headers are stripped.  Certificates are deduplicated.\n                                  The ordering of certificates within the file is arbitrary, and Kubelet\n                                  may change the order over time.\n                                properties:\n                                  labelSelector:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this label selector.  Only has\n                                      effect if signerName is set.  Mutually-exclusive with name.  If unset,\n                                      interpreted as \"match nothing\".  If set but empty, interpreted as \"match\n                                      everything\".\n                                    properties:\n                                      matchExpressions:\n                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                        items:\n                                          description: |-\n                                            A label selector requirement is a selector that contains values, a key, and an operator that\n                                            relates the key and values.\n                                          properties:\n                                            key:\n                                              description: key is the label key that the selector applies to.\n                                              type: string\n                                            operator:\n                                              description: |-\n                                                operator represents a key's relationship to a set of values.\n                                                Valid operators are In, NotIn, Exists and DoesNotExist.\n                                              type: string\n                                            values:\n                                              description: |-\n                                                values is an array of string values. If the operator is In or NotIn,\n                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                the values array must be empty. This array is replaced during a strategic\n                                                merge patch.\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        description: |-\n                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                          map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                          operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  name:\n                                    description: |-\n                                      Select a single ClusterTrustBundle by object name.  Mutually-exclusive\n                                      with signerName and labelSelector.\n                                    type: string\n                                  optional:\n                                    description: |-\n                                      If true, don't block pod startup if the referenced ClusterTrustBundle(s)\n                                      aren't available.  If using name, then the named ClusterTrustBundle is\n                                      allowed not to exist.  If using signerName, then the combination of\n                                      signerName and labelSelector is allowed to match zero\n                                      ClusterTrustBundles.\n                                    type: boolean\n                                  path:\n                                    description: Relative path from the volume root to write the bundle.\n                                    type: string\n                                  signerName:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this signer name.\n                                      Mutually-exclusive with name.  The contents of all selected\n                                      ClusterTrustBundles will be unified and deduplicated.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      ConfigMap will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the ConfigMap,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: |-\n                                            Optional: mode bits used to set permissions on this file, must be an octal value\n                                            between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: |-\n                                            Selects a resource of the container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                type: object\n                              podCertificate:\n                                description: |-\n                                  Projects an auto-rotating credential bundle (private key and certificate\n                                  chain) that the pod can use either as a TLS client or server.\n\n                                  Kubelet generates a private key and uses it to send a\n                                  PodCertificateRequest to the named signer.  Once the signer approves the\n                                  request and issues a certificate chain, Kubelet writes the key and\n                                  certificate chain to the pod filesystem.  The pod does not start until\n                                  certificates have been issued for each podCertificate projected volume\n                                  source in its spec.\n\n                                  Kubelet will begin trying to rotate the certificate at the time indicated\n                                  by the signer using the PodCertificateRequest.Status.BeginRefreshAt\n                                  timestamp.\n\n                                  Kubelet can write a single file, indicated by the credentialBundlePath\n                                  field, or separate files, indicated by the keyPath and\n                                  certificateChainPath fields.\n\n                                  The credential bundle is a single file in PEM format.  The first PEM\n                                  entry is the private key (in PKCS#8 format), and the remaining PEM\n                                  entries are the certificate chain issued by the signer (typically,\n                                  signers will return their certificate chain in leaf-to-root order).\n\n                                  Prefer using the credential bundle format, since your application code\n                                  can read it atomically.  If you use keyPath and certificateChainPath,\n                                  your application must make two separate file reads. If these coincide\n                                  with a certificate rotation, it is possible that the private key and leaf\n                                  certificate you read may not correspond to each other.  Your application\n                                  will need to check for this condition, and re-read until they are\n                                  consistent.\n\n                                  The named signer controls chooses the format of the certificate it\n                                  issues; consult the signer implementation's documentation to learn how to\n                                  use the certificates it issues.\n                                properties:\n                                  certificateChainPath:\n                                    description: |-\n                                      Write the certificate chain at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  credentialBundlePath:\n                                    description: |-\n                                      Write the credential bundle at this path in the projected volume.\n\n                                      The credential bundle is a single file that contains multiple PEM blocks.\n                                      The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private\n                                      key.\n\n                                      The remaining blocks are CERTIFICATE blocks, containing the issued\n                                      certificate chain from the signer (leaf and any intermediates).\n\n                                      Using credentialBundlePath lets your Pod's application code make a single\n                                      atomic read that retrieves a consistent key and certificate chain.  If you\n                                      project them to separate files, your application code will need to\n                                      additionally check that the leaf certificate was issued to the key.\n                                    type: string\n                                  keyPath:\n                                    description: |-\n                                      Write the key at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  keyType:\n                                    description: |-\n                                      The type of keypair Kubelet will generate for the pod.\n\n                                      Valid values are \"RSA3072\", \"RSA4096\", \"ECDSAP256\", \"ECDSAP384\",\n                                      \"ECDSAP521\", and \"ED25519\".\n                                    type: string\n                                  maxExpirationSeconds:\n                                    description: |-\n                                      maxExpirationSeconds is the maximum lifetime permitted for the\n                                      certificate.\n\n                                      Kubelet copies this value verbatim into the PodCertificateRequests it\n                                      generates for this projection.\n\n                                      If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver\n                                      will reject values shorter than 3600 (1 hour).  The maximum allowable\n                                      value is 7862400 (91 days).\n\n                                      The signer implementation is then free to issue a certificate with any\n                                      lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600\n                                      seconds (1 hour).  This constraint is enforced by kube-apiserver.\n                                      `kubernetes.io` signers will never issue certificates with a lifetime\n                                      longer than 24 hours.\n                                    format: int32\n                                    type: integer\n                                  signerName:\n                                    description: Kubelet's generated CSRs will be addressed to this signer.\n                                    type: string\n                                  userAnnotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      userAnnotations allow pod authors to pass additional information to\n                                      the signer implementation.  Kubernetes does not restrict or validate this\n                                      metadata in any way.\n\n                                      These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of\n                                      the PodCertificateRequest objects that Kubelet creates.\n\n                                      Entries are subject to the same validation as object metadata annotations,\n                                      with the addition that all keys must be domain-prefixed. No restrictions\n                                      are placed on values, except an overall size limitation on the entire field.\n\n                                      Signers should document the keys and values they support. Signers should\n                                      deny requests that contain keys they do not recognize.\n                                    type: object\n                                required:\n                                - keyType\n                                - signerName\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      Secret will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the Secret,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: |-\n                                      audience is the intended audience of the token. A recipient of a token\n                                      must identify itself with an identifier specified in the audience of the\n                                      token, and otherwise should reject the token. The audience defaults to the\n                                      identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: |-\n                                      expirationSeconds is the requested duration of validity of the service\n                                      account token. As the token approaches expiration, the kubelet volume\n                                      plugin will proactively rotate the service account token. The kubelet will\n                                      start trying to rotate the token if the token is older than 80 percent of\n                                      its time to live or if the token is older than 24 hours.Defaults to 1 hour\n                                      and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: |-\n                                      path is the path relative to the mount point of the file to project the\n                                      token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    quobyte:\n                      description: |-\n                        quobyte represents a Quobyte mount on the host that shares a pod's lifetime.\n                        Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.\n                      properties:\n                        group:\n                          description: |-\n                            group to map volume access to\n                            Default is no group\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Quobyte volume to be mounted with read-only permissions.\n                            Defaults to false.\n                          type: boolean\n                        registry:\n                          description: |-\n                            registry represents a single or multiple Quobyte Registry services\n                            specified as a string as host:port pair (multiple entries are separated with commas)\n                            which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: |-\n                            tenant owning the given Quobyte volume in the Backend\n                            Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: |-\n                            user to map volume access to\n                            Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: |-\n                        rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\n                        Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                          type: string\n                        image:\n                          description: |-\n                            image is the rados image name.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        keyring:\n                          default: /etc/ceph/keyring\n                          description: |-\n                            keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        monitors:\n                          description: |-\n                            monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        pool:\n                          default: rbd\n                          description: |-\n                            pool is the rados pool name.\n                            Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is name of the authentication secret for RBDUser. If provided\n                            overrides keyring.\n                            Default is nil.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          default: admin\n                          description: |-\n                            user is the rados user name.\n                            Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: |-\n                        scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                        Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.\n                      properties:\n                        fsType:\n                          default: xfs\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef references to the secret for ScaleIO user and other\n                            sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          default: ThinProvisioned\n                          description: |-\n                            storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: |-\n                            volumeName is the name of a volume already created in the ScaleIO system\n                            that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: |-\n                        secret represents a secret that should populate this volume.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values\n                            for mode bits. Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items If unspecified, each key-value pair in the Data field of the referenced\n                            Secret will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the Secret,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: |-\n                            secretName is the name of the secret in the pod's namespace to use.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                          type: string\n                      type: object\n                    storageos:\n                      description: |-\n                        storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                        Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef specifies the secret to use for obtaining the StorageOS API\n                            credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: |-\n                            volumeName is the human-readable name of the StorageOS volume.  Volume\n                            names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: |-\n                            volumeNamespace specifies the scope of the volume within StorageOS.  If no\n                            namespace is specified then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS for tighter integration.\n                            Set VolumeName to any name to override the default behaviour.\n                            Set to \"default\" if you are not using namespaces within StorageOS.\n                            Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: |-\n                        vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.\n                        Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type\n                        are redirected to the csi.vsphere.vmware.com CSI driver.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: |-\n                  walCompression defines the compression of the write-ahead log (WAL) using Snappy.\n\n                  WAL compression is enabled by default for Prometheus >= 2.20.0\n\n                  Requires Prometheus v2.11.0 and above.\n                type: boolean\n              web:\n                description: web defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: httpConfig defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: headers defines a list of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: |-\n                              contentSecurityPolicy defines the Content-Security-Policy header to HTTP responses.\n                              Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: |-\n                              strictTransportSecurity defines the Strict-Transport-Security header to HTTP responses.\n                              Unset if blank.\n                              Please make sure that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications hosted on the same\n                              domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: |-\n                              xContentTypeOptions defines the X-Content-Type-Options header to HTTP responses.\n                              Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: |-\n                              xFrameOptions defines the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: |-\n                              xXSSProtection defines the X-XSS-Protection header to all responses.\n                              Unset if blank.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: |-\n                          http2 enable HTTP/2 support. Note that HTTP/2 is only supported with TLS.\n                          When TLSConfig is not configured, HTTP/2 will be disabled.\n                          Whenever the value of the field changes, a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: |-\n                      maxConnections defines the maximum number of simultaneous connections\n                      A zero value means that Prometheus doesn't accept any incoming connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: pageTitle defines the prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: tlsConfig defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: |-\n                          cert defines the Secret or ConfigMap containing the TLS certificate for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `certFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: |-\n                          certFile defines the path to the TLS certificate file in the container for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `cert`.\n                        type: string\n                      cipherSuites:\n                        description: |-\n                          cipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\n\n                          If not defined, the Go default cipher suites are used.\n                          Available cipher suites are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: |-\n                          client_ca defines the Secret or ConfigMap containing the CA certificate for client certificate\n                          authentication to the server.\n\n                          It is mutually exclusive with `clientCAFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: |-\n                          clientAuthType defines the server policy for client TLS authentication.\n\n                          For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType\n                        type: string\n                      clientCAFile:\n                        description: |-\n                          clientCAFile defines the path to the CA certificate file for client certificate authentication to\n                          the server.\n\n                          It is mutually exclusive with `client_ca`.\n                        type: string\n                      curvePreferences:\n                        description: |-\n                          curvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference\n                          order.\n\n                          Available curves are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#CurveID\n                        items:\n                          type: string\n                        type: array\n                      keyFile:\n                        description: |-\n                          keyFile defines the path to the TLS private key file in the container for the web server.\n\n                          If defined, either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keySecret`.\n                        type: string\n                      keySecret:\n                        description: |-\n                          keySecret defines the secret containing the TLS private key for the web server.\n\n                          Either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keyFile`.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: maxVersion defines the Maximum TLS version that is acceptable.\n                        type: string\n                      minVersion:\n                        description: minVersion defines the minimum TLS version that is acceptable.\n                        type: string\n                      preferServerCipherSuites:\n                        description: |-\n                          preferServerCipherSuites defines whether the server selects the client's most preferred cipher\n                          suite, or the server's most preferred cipher suite.\n\n                          If true then the server's preference, as expressed in\n                          the order of elements in cipherSuites, is used.\n                        type: boolean\n                    type: object\n                type: object\n            type: object\n          status:\n            description: |-\n              status defines the most recent observed status of the Prometheus cluster. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              availableReplicas:\n                description: |-\n                  availableReplicas defines the total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: conditions defines the current state of the Prometheus deployment.\n                items:\n                  description: |-\n                    Condition represents the state of the resources associated with the\n                    Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: message defines human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: |-\n                        observedGeneration defines the .metadata.generation that the\n                        condition was set based upon. For instance, if `.metadata.generation` is\n                        currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                        condition is out of date with respect to the current state of the\n                        instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: status of the condition.\n                      minLength: 1\n                      type: string\n                    type:\n                      description: type of the condition being reported.\n                      minLength: 1\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: |-\n                  paused defines whether any actions on the underlying managed objects are\n                  being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: |-\n                  replicas defines the total number of non-terminated pods targeted by this Prometheus deployment\n                  (their labels match the selector).\n                format: int32\n                type: integer\n              selector:\n                description: selector used to match the pods targeted by this Prometheus resource.\n                type: string\n              shardStatuses:\n                description: shardStatuses defines the list has one entry per shard. Each entry provides a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: |-\n                        availableReplicas defines the total number of available pods (ready for at least minReadySeconds)\n                        targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: replicas defines the total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: shardID defines the identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: unavailableReplicas defines the Total number of unavailable pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: |-\n                        updatedReplicas defines the total number of non-terminated pods targeted by this shard\n                        that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              shards:\n                description: shards defines the most recently observed number of shards.\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: unavailableReplicas defines the total number of unavailable pods targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: |-\n                  updatedReplicas defines the total number of non-terminated pods targeted by this Prometheus deployment\n                  that have the desired version spec.\n                format: int32\n                type: integer\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      scale:\n        labelSelectorPath: .status.selector\n        specReplicasPath: .spec.shards\n        statusReplicasPath: .status.shards\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0prometheusagentCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: prometheusagents.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusAgent\n    listKind: PrometheusAgentList\n    plural: prometheusagents\n    shortNames:\n    - promagent\n    singular: prometheusagent\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus agent\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `PrometheusAgent` custom resource definition (CRD) defines a desired [Prometheus Agent](https://prometheus.io/blog/2021/11/16/agent/) setup to run in a Kubernetes cluster.\n\n          The CRD is very similar to the `Prometheus` CRD except for features which aren't available in agent mode like rule evaluation, persistent storage and Thanos sidecar.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: |-\n              spec defines the specification of the desired behavior of the Prometheus agent. More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              additionalArgs:\n                description: |-\n                  additionalArgs allows setting additional arguments for the 'prometheus' container.\n\n                  It is intended for e.g. activating hidden flags which are not supported by\n                  the dedicated configuration options yet. The arguments are passed as-is to the\n                  Prometheus container which may cause issues if they are invalid or not supported\n                  by the given Prometheus version.\n\n                  In case of an argument conflict (e.g. an argument which is already set by the\n                  operator itself) or when providing an invalid argument, the reconciliation will\n                  fail and an error will be logged.\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: value defines the argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: |-\n                  additionalScrapeConfigs allows specifying a key of a Secret containing\n                  additional Prometheus scrape configurations. Scrape configurations\n                  specified are appended to the configurations generated by the Prometheus\n                  Operator. Job configurations specified must have the form as specified\n                  in the official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config.\n                  As scrape configs are appended, the user is responsible to make sure it\n                  is valid. Note that using this feature may expose the possibility to\n                  break upgrades of Prometheus. It is advised to review Prometheus release\n                  notes to ensure that no incompatible scrape configs are going to break\n                  Prometheus after the upgrade.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: affinity defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: |-\n                            An empty preferred scheduling term matches all objects with implicit weight 0\n                            (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to an update), the system\n                          may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: |-\n                                A null or empty node selector term matches no objects. The requirements of\n                                them are ANDed.\n                                The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                            x-kubernetes-list-type: atomic\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the anti-affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and subtracting\n                          \"weight\" from the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the anti-affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the anti-affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                type: object\n              apiserverConfig:\n                description: |-\n                  apiserverConfig allows specifying a host and auth methods to access the\n                  Kuberntees API server.\n                  If null, Prometheus is assumed to run inside of the cluster: it will\n                  discover the API servers automatically and use the Pod's CA certificate\n                  and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\n                properties:\n                  authorization:\n                    description: |-\n                      authorization section for the API server.\n\n                      Cannot be set at the same time as `basicAuth`, `bearerToken`, or\n                      `bearerTokenFile`.\n                    properties:\n                      credentials:\n                        description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                        type: string\n                      type:\n                        description: |-\n                          type defines the authentication type. The value is case-insensitive.\n\n                          \"Basic\" is not a supported value.\n\n                          Default: \"Bearer\"\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: |-\n                      basicAuth configuration for the API server.\n\n                      Cannot be set at the same time as `authorization`, `bearerToken`, or\n                      `bearerTokenFile`.\n                    properties:\n                      password:\n                        description: |-\n                          password defines a key of a Secret containing the password for\n                          authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: |-\n                          username defines a key of a Secret containing the username for\n                          authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: |-\n                      bearerToken is deprecated: this will be removed in a future release.\n                       *Warning: this field shouldn't be used because the token value appears\n                      in clear-text. Prefer using `authorization`.*\n                    type: string\n                  bearerTokenFile:\n                    description: |-\n                      bearerTokenFile defines the file to read bearer token for accessing apiserver.\n\n                      Cannot be set at the same time as `basicAuth`, `authorization`, or `bearerToken`.\n\n                      Deprecated: this will be removed in a future release. Prefer using `authorization`.\n                    type: string\n                  host:\n                    description: |-\n                      host defines the Kubernetes API address consisting of a hostname or IP address followed\n                      by an optional port number.\n                    type: string\n                  noProxy:\n                    description: |-\n                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                      that should be excluded from proxying. IP and domain names can\n                      contain port numbers.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: string\n                  proxyConnectHeader:\n                    additionalProperties:\n                      items:\n                        description: SecretKeySelector selects a key of a Secret.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      type: array\n                    description: |-\n                      proxyConnectHeader optionally specifies headers to send to\n                      proxies during CONNECT requests.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  proxyFromEnvironment:\n                    description: |-\n                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: boolean\n                  proxyUrl:\n                    description: proxyUrl defines the HTTP proxy server to use.\n                    pattern: ^(http|https|socks5)://.+$\n                    type: string\n                  tlsConfig:\n                    description: tlsConfig to use for the API server.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: |-\n                  arbitraryFSAccessThroughSMs when true, ServiceMonitor, PodMonitor and Probe object are forbidden to\n                  reference arbitrary files on the file system of the 'prometheus'\n                  container.\n                  When a ServiceMonitor's endpoint specifies a `bearerTokenFile` value\n                  (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'), a\n                  malicious target can get access to the Prometheus service account's\n                  token in the Prometheus' scrape request. Setting\n                  `spec.arbitraryFSAccessThroughSM` to 'true' would prevent the attack.\n                  Users should instead provide the credentials using the\n                  `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    description: |-\n                      deny prevents service monitors from accessing arbitrary files on the file system.\n                      When true, service monitors cannot use file-based configurations like BearerTokenFile\n                      that could potentially access sensitive files. When false (default), such access is allowed.\n                      Setting this to true enhances security by preventing potential credential theft attacks.\n                    type: boolean\n                type: object\n              automountServiceAccountToken:\n                description: |-\n                  automountServiceAccountToken defines whether a service account token should be automatically mounted in the pod.\n                  If the field isn't set, the operator mounts the service account token by default.\n\n                  **Warning:** be aware that by default, Prometheus requires the service account token for Kubernetes service discovery.\n                  It is possible to use strategic merge patch to project the service account token into the 'prometheus' container.\n                type: boolean\n              bodySizeLimit:\n                description: |-\n                  bodySizeLimit defines per-scrape on response body size.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedBodySizeLimit.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              configMaps:\n                description: |-\n                  configMaps defines a list of ConfigMaps in the same namespace as the Prometheus\n                  object, which shall be mounted into the Prometheus Pods.\n                  Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-<configmap-name>`.\n                  The ConfigMaps are mounted into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: |-\n                  containers allows injecting additional containers or modifying operator\n                  generated containers. This can be used to allow adding an authentication\n                  proxy to the Pods or to change the behavior of an operator generated\n                  container. Containers described here modify an operator generated\n                  container if they share the same name and modifications are done via a\n                  strategic merge patch.\n\n                  The names of containers managed by the operator are:\n                  * `prometheus`\n                  * `config-reloader`\n                  * `thanos-sidecar`\n\n                  Overriding containers which are managed by the operator require careful\n                  testing, especially when upgrading to a new version of the operator.\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              convertClassicHistogramsToNHCB:\n                description: |-\n                  convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native\n                  histogram with custom buckets.\n\n                  It requires Prometheus >= v3.4.0.\n                type: boolean\n              dnsConfig:\n                description: dnsConfig defines the DNS configuration for the pods.\n                properties:\n                  nameservers:\n                    description: |-\n                      nameservers defines the list of DNS name server IP addresses.\n                      This will be appended to the base nameservers generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                  options:\n                    description: |-\n                      options defines the list of DNS resolver options.\n                      This will be merged with the base options generated from DNSPolicy.\n                      Resolution options given in Options\n                      will override those that appear in the base DNSPolicy.\n                    items:\n                      description: PodDNSConfigOption defines DNS resolver options of a pod.\n                      properties:\n                        name:\n                          description: name is required and must be unique.\n                          minLength: 1\n                          type: string\n                        value:\n                          description: value is optional.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  searches:\n                    description: |-\n                      searches defines the list of DNS search domains for host-name lookup.\n                      This will be appended to the base search paths generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                type: object\n              dnsPolicy:\n                description: dnsPolicy defines the DNS policy for the pods.\n                enum:\n                - ClusterFirstWithHostNet\n                - ClusterFirst\n                - Default\n                - None\n                type: string\n              enableFeatures:\n                description: |-\n                  enableFeatures enables access to Prometheus feature flags. By default, no features are enabled.\n\n                  Enabling features which are disabled by default is entirely outside the\n                  scope of what the maintainers will support and by doing so, you accept\n                  that this behaviour may break at any time without notice.\n\n                  For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\n                items:\n                  minLength: 1\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              enableOTLPReceiver:\n                description: |-\n                  enableOTLPReceiver defines the Prometheus to be used as a receiver for the OTLP Metrics protocol.\n\n                  Note that the OTLP receiver endpoint is automatically enabled if `.spec.otlpConfig` is defined.\n\n                  It requires Prometheus >= v2.47.0.\n                type: boolean\n              enableRemoteWriteReceiver:\n                description: |-\n                  enableRemoteWriteReceiver defines the Prometheus to be used as a receiver for the Prometheus remote\n                  write protocol.\n\n                  WARNING: This is not considered an efficient way of ingesting samples.\n                  Use it with caution for specific low-volume use cases.\n                  It is not suitable for replacing the ingestion via scraping and turning\n                  Prometheus into a push-based metrics collection system.\n                  For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\n\n                  It requires Prometheus >= v2.33.0.\n                type: boolean\n              enableServiceLinks:\n                description: enableServiceLinks defines whether information about services should be injected into pod's environment variables\n                type: boolean\n              enforcedBodySizeLimit:\n                description: |-\n                  enforcedBodySizeLimit when defined specifies a global limit on the size\n                  of uncompressed response body that will be accepted by Prometheus.\n                  Targets responding with a body larger than this many bytes will cause\n                  the scrape to fail.\n\n                  It requires Prometheus >= v2.28.0.\n\n                  When both `enforcedBodySizeLimit` and `bodySizeLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined bodySizeLimit value will inherit the global bodySizeLimit value (Prometheus >= 2.45.0) or the enforcedBodySizeLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedBodySizeLimit` is greater than the `bodySizeLimit`, the `bodySizeLimit` will be set to `enforcedBodySizeLimit`.\n                  * Scrape objects with a bodySizeLimit value less than or equal to enforcedBodySizeLimit keep their specific value.\n                  * Scrape objects with a bodySizeLimit value greater than enforcedBodySizeLimit are set to enforcedBodySizeLimit.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedKeepDroppedTargets:\n                description: |-\n                  enforcedKeepDroppedTargets when defined specifies a global limit on the number of targets\n                  dropped by relabeling that will be kept in memory. The value overrides\n                  any `spec.keepDroppedTargets` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.keepDroppedTargets` is\n                  greater than zero and less than `spec.enforcedKeepDroppedTargets`.\n\n                  It requires Prometheus >= v2.47.0.\n\n                  When both `enforcedKeepDroppedTargets` and `keepDroppedTargets` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined keepDroppedTargets value will inherit the global keepDroppedTargets value (Prometheus >= 2.45.0) or the enforcedKeepDroppedTargets value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedKeepDroppedTargets` is greater than the `keepDroppedTargets`, the `keepDroppedTargets` will be set to `enforcedKeepDroppedTargets`.\n                  * Scrape objects with a keepDroppedTargets value less than or equal to enforcedKeepDroppedTargets keep their specific value.\n                  * Scrape objects with a keepDroppedTargets value greater than enforcedKeepDroppedTargets are set to enforcedKeepDroppedTargets.\n                format: int64\n                type: integer\n              enforcedLabelLimit:\n                description: |-\n                  enforcedLabelLimit when defined specifies a global limit on the number\n                  of labels per sample. The value overrides any `spec.labelLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.labelLimit` is\n                  greater than zero and less than `spec.enforcedLabelLimit`.\n\n                  It requires Prometheus >= v2.27.0.\n\n                  When both `enforcedLabelLimit` and `labelLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined labelLimit value will inherit the global labelLimit value (Prometheus >= 2.45.0) or the enforcedLabelLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedLabelLimit` is greater than the `labelLimit`, the `labelLimit` will be set to `enforcedLabelLimit`.\n                  * Scrape objects with a labelLimit value less than or equal to enforcedLabelLimit keep their specific value.\n                  * Scrape objects with a labelLimit value greater than enforcedLabelLimit are set to enforcedLabelLimit.\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: |-\n                  enforcedLabelNameLengthLimit when defined specifies a global limit on the length\n                  of labels name per sample. The value overrides any `spec.labelNameLengthLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelNameLengthLimit`.\n\n                  It requires Prometheus >= v2.27.0.\n\n                  When both `enforcedLabelNameLengthLimit` and `labelNameLengthLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined labelNameLengthLimit value will inherit the global labelNameLengthLimit value (Prometheus >= 2.45.0) or the enforcedLabelNameLengthLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedLabelNameLengthLimit` is greater than the `labelNameLengthLimit`, the `labelNameLengthLimit` will be set to `enforcedLabelNameLengthLimit`.\n                  * Scrape objects with a labelNameLengthLimit value less than or equal to enforcedLabelNameLengthLimit keep their specific value.\n                  * Scrape objects with a labelNameLengthLimit value greater than enforcedLabelNameLengthLimit are set to enforcedLabelNameLengthLimit.\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: |-\n                  enforcedLabelValueLengthLimit when not null defines a global limit on the length\n                  of labels value per sample. The value overrides any `spec.labelValueLengthLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelValueLengthLimit`.\n\n                  It requires Prometheus >= v2.27.0.\n\n                  When both `enforcedLabelValueLengthLimit` and `labelValueLengthLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined labelValueLengthLimit value will inherit the global labelValueLengthLimit value (Prometheus >= 2.45.0) or the enforcedLabelValueLengthLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedLabelValueLengthLimit` is greater than the `labelValueLengthLimit`, the `labelValueLengthLimit` will be set to `enforcedLabelValueLengthLimit`.\n                  * Scrape objects with a labelValueLengthLimit value less than or equal to enforcedLabelValueLengthLimit keep their specific value.\n                  * Scrape objects with a labelValueLengthLimit value greater than enforcedLabelValueLengthLimit are set to enforcedLabelValueLengthLimit.\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: |-\n                  enforcedNamespaceLabel when not empty, a label will be added to:\n\n                  1. All metrics scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig` objects.\n                  2. All metrics generated from recording rules defined in `PrometheusRule` objects.\n                  3. All alerts generated from alerting rules defined in `PrometheusRule` objects.\n                  4. All vector selectors of PromQL expressions defined in `PrometheusRule` objects.\n\n                  The label will not added for objects referenced in `spec.excludedFromEnforcement`.\n\n                  The label's name is this field's value.\n                  The label's value is the namespace of the `ServiceMonitor`,\n                  `PodMonitor`, `Probe`, `PrometheusRule` or `ScrapeConfig` object.\n                type: string\n              enforcedSampleLimit:\n                description: |-\n                  enforcedSampleLimit when defined specifies a global limit on the number\n                  of scraped samples that will be accepted. This overrides any\n                  `spec.sampleLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.sampleLimit` is greater than zero and less than\n                  `spec.enforcedSampleLimit`.\n\n                  It is meant to be used by admins to keep the overall number of\n                  samples/series under a desired limit.\n\n                  When both `enforcedSampleLimit` and `sampleLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined sampleLimit value will inherit the global sampleLimit value (Prometheus >= 2.45.0) or the enforcedSampleLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedSampleLimit` is greater than the `sampleLimit`, the `sampleLimit` will be set to `enforcedSampleLimit`.\n                  * Scrape objects with a sampleLimit value less than or equal to enforcedSampleLimit keep their specific value.\n                  * Scrape objects with a sampleLimit value greater than enforcedSampleLimit are set to enforcedSampleLimit.\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: |-\n                  enforcedTargetLimit when defined specifies a global limit on the number\n                  of scraped targets. The value overrides any `spec.targetLimit` set by\n                  ServiceMonitor, PodMonitor, Probe objects unless `spec.targetLimit` is\n                  greater than zero and less than `spec.enforcedTargetLimit`.\n\n                  It is meant to be used by admins to to keep the overall number of\n                  targets under a desired limit.\n\n                  When both `enforcedTargetLimit` and `targetLimit` are defined and greater than zero, the following rules apply:\n                  * Scrape objects without a defined targetLimit value will inherit the global targetLimit value (Prometheus >= 2.45.0) or the enforcedTargetLimit value (Prometheus < v2.45.0).\n                    If Prometheus version is >= 2.45.0 and the `enforcedTargetLimit` is greater than the `targetLimit`, the `targetLimit` will be set to `enforcedTargetLimit`.\n                  * Scrape objects with a targetLimit value less than or equal to enforcedTargetLimit keep their specific value.\n                  * Scrape objects with a targetLimit value greater than enforcedTargetLimit are set to enforcedTargetLimit.\n                format: int64\n                type: integer\n              excludedFromEnforcement:\n                description: |-\n                  excludedFromEnforcement defines the list of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\n                  to be excluded from enforcing a namespace label of origin.\n\n                  It is only applicable if `spec.enforcedNamespaceLabel` set to true.\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: group of the referent. When not specified, it defaults to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name of the referent. When not set, all resources in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: |-\n                        namespace of the referent.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      - scrapeconfigs\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: |-\n                  externalLabels defines the labels to add to any time series or alerts when communicating with\n                  external systems (federation, remote storage, Alertmanager).\n                  Labels defined by `spec.replicaExternalLabelName` and\n                  `spec.prometheusExternalLabelName` take precedence over this list.\n                type: object\n              externalUrl:\n                description: |-\n                  externalUrl defines the external URL under which the Prometheus service is externally\n                  available. This is necessary to generate correct URLs (for instance if\n                  Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: |-\n                  hostAliases defines the optional list of hosts and IPs that will be injected into the Pod's\n                  hosts file if specified.\n                items:\n                  description: |-\n                    HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\n                    pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: hostnames defines hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: ip defines the IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: |-\n                  hostNetwork defines the host's network namespace if true.\n\n                  Make sure to understand the security implications if you want to enable\n                  it (https://kubernetes.io/docs/concepts/configuration/overview/ ).\n\n                  When hostNetwork is enabled, this will set the DNS policy to\n                  `ClusterFirstWithHostNet` automatically (unless `.spec.DNSPolicy` is set\n                  to a different value).\n                type: boolean\n              hostUsers:\n                description: |-\n                  hostUsers supports the user space in Kubernetes.\n\n                  More info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\n\n                  The feature requires at least Kubernetes 1.28 with the `UserNamespacesSupport` feature gate enabled.\n                  Starting Kubernetes 1.33, the feature is enabled by default.\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: |-\n                  ignoreNamespaceSelectors when true, `spec.namespaceSelector` from all PodMonitor, ServiceMonitor\n                  and Probe objects will be ignored. They will only discover targets\n                  within the namespace of the PodMonitor, ServiceMonitor and Probe\n                  object.\n                type: boolean\n              image:\n                description: |-\n                  image defines the container image name for Prometheus. If specified, it takes precedence\n                  over the `spec.baseImage`, `spec.tag` and `spec.sha` fields.\n\n                  Specifying `spec.version` is still necessary to ensure the Prometheus\n                  Operator knows which version of Prometheus is being configured.\n\n                  If neither `spec.image` nor `spec.baseImage` are defined, the operator\n                  will use the latest upstream version of Prometheus available at the time\n                  when the operator was released.\n                type: string\n              imagePullPolicy:\n                description: |-\n                  imagePullPolicy defines the image pull policy for the 'prometheus', 'init-config-reloader' and 'config-reloader' containers.\n                  See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: |-\n                  imagePullSecrets defines an optional list of references to Secrets in the same namespace\n                  to use for pulling images from registries.\n                  See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: |-\n                    LocalObjectReference contains enough information to let you locate the\n                    referenced object inside the same namespace.\n                  properties:\n                    name:\n                      default: \"\"\n                      description: |-\n                        Name of the referent.\n                        This field is effectively required, but due to backwards compatibility is\n                        allowed to be empty. Instances of this type with an empty value here are\n                        almost certainly wrong.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: |-\n                  initContainers allows injecting initContainers to the Pod definition. Those\n                  can be used to e.g. fetch secrets for injection into the Prometheus\n                  configuration from external sources. Any errors during the execution of\n                  an initContainer will lead to a restart of the Pod. More info:\n                  https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done via a\n                  strategic merge patch.\n\n                  The names of init container name managed by the operator are:\n                  * `init-config-reloader`.\n\n                  Overriding init containers which are managed by the operator require\n                  careful testing, especially when upgrading to a new version of the\n                  operator.\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              keepDroppedTargets:\n                description: |-\n                  keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\n                  that will be kept in memory. 0 means no limit.\n\n                  It requires Prometheus >= v2.47.0.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedKeepDroppedTargets.\n                format: int64\n                type: integer\n              labelLimit:\n                description: |-\n                  labelLimit defines per-scrape limit on number of labels that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelLimit.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: |-\n                  labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelNameLengthLimit.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: |-\n                  labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedLabelValueLengthLimit.\n                format: int64\n                type: integer\n              listenLocal:\n                description: |-\n                  listenLocal when true, the Prometheus server listens on the loopback address\n                  instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: logFormat for Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: logLevel for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              maximumStartupDurationSeconds:\n                description: |-\n                  maximumStartupDurationSeconds defines the maximum time that the `prometheus` container's startup probe will wait before being considered failed. The startup probe will return success after the WAL replay is complete.\n                  If set, the value should be greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15 minutes).\n                format: int32\n                minimum: 60\n                type: integer\n              minReadySeconds:\n                description: |-\n                  minReadySeconds defines the minimum number of seconds for which a newly created Pod should be ready\n                  without any of its container crashing for it to be considered available.\n\n                  If unset, pods will be considered available as soon as they are ready.\n                format: int32\n                minimum: 0\n                type: integer\n              mode:\n                description: |-\n                  mode defines how the Prometheus operator deploys the PrometheusAgent pod(s).\n\n                  (Alpha) Using this field requires the `PrometheusAgentDaemonSet` feature gate to be enabled.\n                enum:\n                - StatefulSet\n                - DaemonSet\n                type: string\n              nameEscapingScheme:\n                description: |-\n                  nameEscapingScheme defines the character escaping scheme that will be requested when scraping\n                  for metric and label names that do not conform to the legacy Prometheus\n                  character set.\n\n                  It requires Prometheus >= v3.4.0.\n                enum:\n                - AllowUTF8\n                - Underscores\n                - Dots\n                - Values\n                type: string\n              nameValidationScheme:\n                description: |-\n                  nameValidationScheme defines the validation scheme for metric and label names.\n\n                  It requires Prometheus >= v2.55.0.\n                enum:\n                - UTF8\n                - Legacy\n                type: string\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: nodeSelector defines on which Nodes the Pods are scheduled.\n                type: object\n              otlp:\n                description: |-\n                  otlp defines the settings related to the OTLP receiver feature.\n                  It requires Prometheus >= v2.55.0.\n                properties:\n                  convertHistogramsToNHCB:\n                    description: |-\n                      convertHistogramsToNHCB defines optional translation of OTLP explicit bucket histograms into native histograms with custom buckets.\n                      It requires Prometheus >= v3.4.0.\n                    type: boolean\n                  ignoreResourceAttributes:\n                    description: |-\n                      ignoreResourceAttributes defines the list of OpenTelemetry resource attributes to ignore when `promoteAllResourceAttributes` is true.\n\n                      It requires `promoteAllResourceAttributes` to be true.\n                      It requires Prometheus >= v3.5.0.\n                    items:\n                      minLength: 1\n                      type: string\n                    minItems: 1\n                    type: array\n                    x-kubernetes-list-type: set\n                  keepIdentifyingResourceAttributes:\n                    description: |-\n                      keepIdentifyingResourceAttributes enables adding `service.name`, `service.namespace` and `service.instance.id`\n                      resource attributes to the `target_info` metric, on top of converting them into the `instance` and `job` labels.\n\n                      It requires Prometheus >= v3.1.0.\n                    type: boolean\n                  promoteAllResourceAttributes:\n                    description: |-\n                      promoteAllResourceAttributes promotes all resource attributes to metric labels except the ones defined in `ignoreResourceAttributes`.\n\n                      Cannot be true when `promoteResourceAttributes` is defined.\n                      It requires Prometheus >= v3.5.0.\n                    type: boolean\n                  promoteResourceAttributes:\n                    description: |-\n                      promoteResourceAttributes defines the list of OpenTelemetry Attributes that should be promoted to metric labels, defaults to none.\n                      Cannot be defined when `promoteAllResourceAttributes` is true.\n                    items:\n                      minLength: 1\n                      type: string\n                    minItems: 1\n                    type: array\n                    x-kubernetes-list-type: set\n                  promoteScopeMetadata:\n                    description: |-\n                      promoteScopeMetadata controls whether to promote OpenTelemetry scope metadata (i.e. name, version, schema URL, and attributes) to metric labels.\n                      As per the OpenTelemetry specification, the aforementioned scope metadata should be identifying, i.e. made into metric labels.\n                      It requires Prometheus >= v3.6.0.\n                    type: boolean\n                  translationStrategy:\n                    description: |-\n                      translationStrategy defines how the OTLP receiver endpoint translates the incoming metrics.\n\n                      It requires Prometheus >= v3.0.0.\n                    enum:\n                    - NoUTF8EscapingWithSuffixes\n                    - UnderscoreEscapingWithSuffixes\n                    - NoTranslation\n                    - UnderscoreEscapingWithoutSuffixes\n                    type: string\n                type: object\n              overrideHonorLabels:\n                description: |-\n                  overrideHonorLabels when true, Prometheus resolves label conflicts by renaming the labels in the scraped data\n                   to “exported_” for all targets created from ServiceMonitor, PodMonitor and\n                  ScrapeConfig objects. Otherwise the HonorLabels field of the service or pod monitor applies.\n                  In practice,`OverrideHonorLabels:true` enforces `honorLabels:false`\n                  for all ServiceMonitor, PodMonitor and ScrapeConfig objects.\n                type: boolean\n              overrideHonorTimestamps:\n                description: |-\n                  overrideHonorTimestamps when true, Prometheus ignores the timestamps for all the targets created\n                  from service and pod monitors.\n                  Otherwise the HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: |-\n                  paused defines when a Prometheus deployment is paused, no actions except for deletion\n                  will be performed on the underlying objects.\n                type: boolean\n              persistentVolumeClaimRetentionPolicy:\n                description: |-\n                  persistentVolumeClaimRetentionPolicy defines the field controls if and how PVCs are deleted during the lifecycle of a StatefulSet.\n                  The default behavior is all PVCs are retained.\n                  This is an alpha field from kubernetes 1.23 until 1.26 and a beta field from 1.26.\n                  It requires enabling the StatefulSetAutoDeletePVC feature gate.\n                properties:\n                  whenDeleted:\n                    description: |-\n                      WhenDeleted specifies what happens to PVCs created from StatefulSet\n                      VolumeClaimTemplates when the StatefulSet is deleted. The default policy\n                      of `Retain` causes PVCs to not be affected by StatefulSet deletion. The\n                      `Delete` policy causes those PVCs to be deleted.\n                    type: string\n                  whenScaled:\n                    description: |-\n                      WhenScaled specifies what happens to PVCs created from StatefulSet\n                      VolumeClaimTemplates when the StatefulSet is scaled down. The default\n                      policy of `Retain` causes PVCs to not be affected by a scaledown. The\n                      `Delete` policy causes the associated PVCs for any excess pods above\n                      the replica count to be deleted.\n                    type: string\n                type: object\n              podManagementPolicy:\n                description: |-\n                  podManagementPolicy defines the policy for creating/deleting pods when\n                  scaling up and down.\n\n                  Unlike the default StatefulSet behavior, the default policy is\n                  `Parallel` to avoid manual intervention in case a pod gets stuck during\n                  a rollout.\n\n                  Note that updating this value implies the recreation of the StatefulSet\n                  which incurs a service outage.\n                enum:\n                - OrderedReady\n                - Parallel\n                type: string\n              podMetadata:\n                description: |-\n                  podMetadata defines labels and annotations which are propagated to the Prometheus pods.\n\n                  The following items are reserved and cannot be overridden:\n                  * \"prometheus\" label, set to the name of the Prometheus object.\n                  * \"app.kubernetes.io/instance\" label, set to the name of the Prometheus object.\n                  * \"app.kubernetes.io/managed-by\" label, set to \"prometheus-operator\".\n                  * \"app.kubernetes.io/name\" label, set to \"prometheus\".\n                  * \"app.kubernetes.io/version\" label, set to the Prometheus version.\n                  * \"operator.prometheus.io/name\" label, set to the name of the Prometheus object.\n                  * \"operator.prometheus.io/shard\" label, set to the shard number of the Prometheus object.\n                  * \"kubectl.kubernetes.io/default-container\" annotation, set to \"prometheus\".\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      annotations defines an unstructured key value map stored with a resource that may be\n                      set by external tools to store and retrieve arbitrary metadata. They are not\n                      queryable and should be preserved when modifying objects.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      labels define the map of string keys and values that can be used to organize and categorize\n                      (scope and select) objects. May match selectors of replication controllers\n                      and services.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                    type: object\n                  name:\n                    description: |-\n                      name must be unique within a namespace. Is required when creating resources, although\n                      some resources may allow a client to request the generation of an appropriate name\n                      automatically. Name is primarily intended for creation idempotence and configuration\n                      definition.\n                      Cannot be updated.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: |-\n                  podMonitorNamespaceSelector defines the namespaces to match for PodMonitors discovery. An empty label selector\n                  matches all namespaces. A null label selector (default value) matches the current\n                  namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: |-\n                  podMonitorSelector defines the podMonitors to be selected for target discovery. An empty label selector\n                  matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: |-\n                  podTargetLabels are appended to the `spec.podTargetLabels` field of all\n                  PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: |-\n                  portName used for the pods and governing service.\n                  Default: \"web\"\n                type: string\n              priorityClassName:\n                description: priorityClassName assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: |-\n                  probeNamespaceSelector defines the namespaces to match for Probe discovery. An empty label\n                  selector matches all namespaces. A null label selector matches the\n                  current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: |-\n                  probeSelector defines the probes to be selected for target discovery. An empty label selector\n                  matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: |-\n                  prometheusExternalLabelName defines the name of Prometheus external label used to denote the Prometheus instance\n                  name. The external label will _not_ be added when the field is set to\n                  the empty string (`\"\"`).\n\n                  Default: \"prometheus\"\n                type: string\n              reloadStrategy:\n                description: |-\n                  reloadStrategy defines the strategy used to reload the Prometheus configuration.\n                  If not specified, the configuration is reloaded using the /-/reload HTTP endpoint.\n                enum:\n                - HTTP\n                - ProcessSignal\n                type: string\n              remoteWrite:\n                description: remoteWrite defines the list of remote write configurations.\n                items:\n                  description: |-\n                    RemoteWriteSpec defines the configuration to write samples from Prometheus\n                    to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization section for the URL.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `sigv4`, `basicAuth`, `oauth2`, or `azureAd`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    azureAd:\n                      description: |-\n                        azureAd for the URL.\n\n                        It requires Prometheus >= v2.45.0 or Thanos >= v0.31.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `sigv4`.\n                      properties:\n                        cloud:\n                          description: cloud defines the Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.\n                          enum:\n                          - AzureChina\n                          - AzureGovernment\n                          - AzurePublic\n                          type: string\n                        managedIdentity:\n                          description: |-\n                            managedIdentity defines the Azure User-assigned Managed identity.\n                            Cannot be set at the same time as `oauth`, `sdk` or `workloadIdentity`.\n                          properties:\n                            clientId:\n                              description: |-\n                                clientId defines the Azure User-assigned Managed identity.\n\n                                For Prometheus >= 3.5.0 and Thanos >= 0.40.0, this field is allowed to be empty to support system-assigned managed identities.\n                              minLength: 1\n                              type: string\n                          type: object\n                        oauth:\n                          description: |-\n                            oauth defines the oauth config that is being used to authenticate.\n                            Cannot be set at the same time as `managedIdentity`, `sdk` or `workloadIdentity`.\n\n                            It requires Prometheus >= v2.48.0 or Thanos >= v0.31.0.\n                          properties:\n                            clientId:\n                              description: clientId defines the clientId of the Azure Active Directory application that is being used to authenticate.\n                              minLength: 1\n                              type: string\n                            clientSecret:\n                              description: clientSecret specifies a key of a Secret containing the client secret of the Azure Active Directory application that is being used to authenticate.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            tenantId:\n                              description: tenantId is the tenant ID of the Azure Active Directory application that is being used to authenticate.\n                              minLength: 1\n                              pattern: ^[0-9a-zA-Z-.]+$\n                              type: string\n                          required:\n                          - clientId\n                          - clientSecret\n                          - tenantId\n                          type: object\n                        scope:\n                          description: |-\n                            scope is the custom OAuth 2.0 scope to request when acquiring tokens.\n                            It requires Prometheus >= 3.9.0. Currently not supported by Thanos.\n                          pattern: ^[\\w\\s:/.\\\\-]+$\n                          type: string\n                        sdk:\n                          description: |-\n                            sdk defines the Azure SDK config that is being used to authenticate.\n                            See https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\n                            Cannot be set at the same time as `oauth`, `managedIdentity` or `workloadIdentity`.\n\n                            It requires Prometheus >= v2.52.0 or Thanos >= v0.36.0.\n                          properties:\n                            tenantId:\n                              description: tenantId defines the tenant ID of the azure active directory application that is being used to authenticate.\n                              pattern: ^[0-9a-zA-Z-.]+$\n                              type: string\n                          type: object\n                        workloadIdentity:\n                          description: |-\n                            workloadIdentity defines the Azure Workload Identity authentication.\n                            Cannot be set at the same time as `oauth`, `managedIdentity`, or `sdk`.\n\n                            It requires Prometheus >= 3.7.0. Currently not supported by Thanos.\n                          properties:\n                            clientId:\n                              description: clientId is the clientID of the Azure Active Directory application.\n                              minLength: 1\n                              type: string\n                            tenantId:\n                              description: tenantId is the tenant ID of the Azure Active Directory application.\n                              minLength: 1\n                              type: string\n                          required:\n                          - clientId\n                          - tenantId\n                          type: object\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth configuration for the URL.\n\n                        Cannot be set at the same time as `sigv4`, `authorization`, `oauth2`, or `azureAd`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: |-\n                        bearerToken is deprecated: this will be removed in a future release.\n                        *Warning: this field shouldn't be used because the token value appears\n                        in clear-text. Prefer using `authorization`.*\n                      type: string\n                    bearerTokenFile:\n                      description: |-\n                        bearerTokenFile defines the file from which to read bearer token for the URL.\n\n                        Deprecated: this will be removed in a future release. Prefer using `authorization`.\n                      type: string\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: |-\n                        followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n                      type: boolean\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: |-\n                        headers defines the custom HTTP headers to be sent along with each remote write request.\n                        Be aware that headers that are set by Prometheus itself can't be overwritten.\n\n                        It requires Prometheus >= v2.25.0 or Thanos >= v0.24.0.\n                      type: object\n                    messageVersion:\n                      description: |-\n                        messageVersion defines the Remote Write message's version to use when writing to the endpoint.\n\n                        `Version1.0` corresponds to the `prometheus.WriteRequest` protobuf message introduced in Remote Write 1.0.\n                        `Version2.0` corresponds to the `io.prometheus.write.v2.Request` protobuf message introduced in Remote Write 2.0.\n\n                        When `Version2.0` is selected, Prometheus will automatically be\n                        configured to append the metadata of scraped metrics to the WAL.\n\n                        Before setting this field, consult with your remote storage provider\n                        what message version it supports.\n\n                        It requires Prometheus >= v2.54.0 or Thanos >= v0.37.0.\n                      enum:\n                      - V1.0\n                      - V2.0\n                      type: string\n                    metadataConfig:\n                      description: |-\n                        metadataConfig defines how to send a series metadata to the remote storage.\n\n                        When the field is empty, **no metadata** is sent. But when the field is\n                        null, metadata is sent.\n                      properties:\n                        maxSamplesPerSend:\n                          description: |-\n                            maxSamplesPerSend defines the maximum number of metadata samples per send.\n\n                            It requires Prometheus >= v2.29.0.\n                          format: int32\n                          minimum: -1\n                          type: integer\n                        send:\n                          description: send defines whether metric metadata is sent to the remote storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: sendInterval defines how frequently metric metadata is sent to the remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: |-\n                        name of the remote write queue, it must be unique if specified. The\n                        name is used in metrics and logging in order to differentiate queues.\n\n                        It requires Prometheus >= v2.15.0 or Thanos >= 0.24.0.\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 configuration for the URL.\n\n                        It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `sigv4`, `authorization`, `basicAuth`, or `azureAd`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    queueConfig:\n                      description: queueConfig allows tuning of the remote write queue parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: batchSendDeadline defines the maximum time a sample will wait in buffer.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        capacity:\n                          description: |-\n                            capacity defines the number of samples to buffer per shard before we start\n                            dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: maxBackoff defines the maximum retry delay.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        maxRetries:\n                          description: maxRetries defines the maximum number of times to retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: maxSamplesPerSend defines the maximum number of samples per send.\n                          type: integer\n                        maxShards:\n                          description: maxShards defines the maximum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: minBackoff defines the initial retry delay. Gets doubled for every retry.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        minShards:\n                          description: minShards defines the minimum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: |-\n                            retryOnRateLimit defines the retry upon receiving a 429 status code from the remote-write storage.\n\n                            This is an *experimental feature*, it may change in any upcoming release\n                            in a breaking way.\n                          type: boolean\n                        sampleAgeLimit:\n                          description: |-\n                            sampleAgeLimit drops samples older than the limit.\n                            It requires Prometheus >= v2.50.0 or Thanos >= v0.32.0.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    remoteTimeout:\n                      description: remoteTimeout defines the timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    roundRobinDNS:\n                      description: \"roundRobinDNS controls the DNS resolution behavior for remote-write connections.\\nWhen enabled:\\n  - The remote-write mechanism will resolve the hostname via DNS.\\n  - It will randomly select one of the resolved IP addresses and connect to it.\\n\\nWhen disabled (default behavior):\\n  - The Go standard library will handle hostname resolution.\\n  - It will attempt connections to each resolved IP address sequentially.\\n\\nNote: The connection timeout applies to the entire resolution and connection process.\\n\\n\\tIf disabled, the timeout is distributed across all connection attempts.\\n\\nIt requires Prometheus >= v3.1.0 or Thanos >= v0.38.0.\"\n                      type: boolean\n                    sendExemplars:\n                      description: |-\n                        sendExemplars enables sending of exemplars over remote write. Note that\n                        exemplar-storage itself must be enabled using the `spec.enableFeatures`\n                        option for exemplars to be scraped in the first place.\n\n                        It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0.\n                      type: boolean\n                    sendNativeHistograms:\n                      description: |-\n                        sendNativeHistograms enables sending of native histograms, also known as sparse histograms\n                        over remote write.\n\n                        It requires Prometheus >= v2.40.0 or Thanos >= v0.30.0.\n                      type: boolean\n                    sigv4:\n                      description: |-\n                        sigv4 defines the AWS's Signature Verification 4 for the URL.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `azureAd`.\n                      properties:\n                        accessKey:\n                          description: |-\n                            accessKey defines the AWS API key. If not specified, the environment variable\n                            `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: profile defines the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: region defines the AWS region. If blank, the region from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: roleArn defines the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: |-\n                            secretKey defines the AWS API secret. If not specified, the environment\n                            variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        useFIPSSTSEndpoint:\n                          description: |-\n                            useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint.\n                            It requires Prometheus >= v2.54.0.\n                          type: boolean\n                      type: object\n                    tlsConfig:\n                      description: tlsConfig to use for the URL.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: |-\n                        url defines the URL of the endpoint to send samples to.\n\n                        It must use the HTTP or HTTPS scheme.\n                      pattern: ^(http|https)://.+$\n                      type: string\n                    writeRelabelConfigs:\n                      description: writeRelabelConfigs defines the list of remote write relabel configurations.\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              remoteWriteReceiverMessageVersions:\n                description: |-\n                  remoteWriteReceiverMessageVersions list of the protobuf message versions to accept when receiving the\n                  remote writes.\n\n                  It requires Prometheus >= v2.54.0.\n                items:\n                  enum:\n                  - V1.0\n                  - V2.0\n                  type: string\n                minItems: 1\n                type: array\n                x-kubernetes-list-type: set\n              replicaExternalLabelName:\n                description: |-\n                  replicaExternalLabelName defines the name of Prometheus external label used to denote the replica name.\n                  The external label will _not_ be added when the field is set to the\n                  empty string (`\"\"`).\n\n                  Default: \"prometheus_replica\"\n                type: string\n              replicas:\n                description: |-\n                  replicas defines the number of replicas of each shard to deploy for a Prometheus deployment.\n                  `spec.replicas` multiplied by `spec.shards` is the total number of Pods\n                  created.\n\n                  Default: 1\n                format: int32\n                type: integer\n              resources:\n                description: resources defines the resources requests and limits of the 'prometheus' container.\n                properties:\n                  claims:\n                    description: |-\n                      Claims lists the names of resources, defined in spec.resourceClaims,\n                      that are used by this container.\n\n                      This field depends on the\n                      DynamicResourceAllocation feature gate.\n\n                      This field is immutable. It can only be set for containers.\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: |-\n                            Name must match the name of one entry in pod.spec.resourceClaims of\n                            the Pod where this field is used. It makes that resource available\n                            inside a container.\n                          type: string\n                        request:\n                          description: |-\n                            Request is the name chosen for a request in the referenced claim.\n                            If empty, everything from the claim is made available, otherwise\n                            only the result of this request.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Limits describes the maximum amount of compute resources allowed.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Requests describes the minimum amount of compute resources required.\n                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                type: object\n              routePrefix:\n                description: |-\n                  routePrefix defines the route prefix Prometheus registers HTTP handlers for.\n\n                  This is useful when using `spec.externalURL`, and a proxy is rewriting\n                  HTTP routes of a request, and the actual ExternalURL is still true, but\n                  the server serves requests under a different route prefix. For example\n                  for use with `kubectl proxy`.\n                type: string\n              runtime:\n                description: runtime defines the values for the Prometheus process behavior\n                properties:\n                  goGC:\n                    description: |-\n                      goGC defines the Go garbage collection target percentage. Lowering this number may increase the CPU usage.\n                      See: https://tip.golang.org/doc/gc-guide#GOGC\n                    format: int32\n                    minimum: -1\n                    type: integer\n                type: object\n              sampleLimit:\n                description: |-\n                  sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedSampleLimit.\n                format: int64\n                type: integer\n              schedulerName:\n                description: schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\n                minLength: 1\n                type: string\n              scrapeClasses:\n                description: |-\n                  scrapeClasses defines the list of scrape classes to expose to scraping objects such as\n                  PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.\n\n                  This is an *experimental feature*, it may change in any upcoming release\n                  in a breaking way.\n                items:\n                  properties:\n                    attachMetadata:\n                      description: |-\n                        attachMetadata defines additional metadata to the discovered targets.\n                        When the scrape object defines its own configuration, it takes\n                        precedence over the scrape class configuration.\n                      properties:\n                        node:\n                          description: |-\n                            node when set to true, Prometheus attaches node metadata to the discovered\n                            targets.\n\n                            The Prometheus service account must have the `list` and `watch`\n                            permissions on the `Nodes` objects.\n                          type: boolean\n                      type: object\n                    authorization:\n                      description: |-\n                        authorization section for the ScrapeClass.\n                        It will only apply if the scrape resource doesn't specify any Authorization.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    default:\n                      description: |-\n                        default defines that the scrape applies to all scrape objects that\n                        don't configure an explicit scrape class name.\n\n                        Only one scrape class can be set as the default.\n                      type: boolean\n                    fallbackScrapeProtocol:\n                      description: |-\n                        fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\n                        It will only apply if the scrape resource doesn't specify any FallbackScrapeProtocol\n\n                        It requires Prometheus >= v3.0.0.\n                      enum:\n                      - PrometheusProto\n                      - OpenMetricsText0.0.1\n                      - OpenMetricsText1.0.0\n                      - PrometheusText0.0.4\n                      - PrometheusText1.0.0\n                      type: string\n                    metricRelabelings:\n                      description: |-\n                        metricRelabelings defines the relabeling rules to apply to all samples before ingestion.\n\n                        The Operator adds the scrape class metric relabelings defined here.\n                        Then the Operator adds the target-specific metric relabelings defined in ServiceMonitors, PodMonitors, Probes and ScrapeConfigs.\n                        Then the Operator adds namespace enforcement relabeling rule, specified in '.spec.enforcedNamespaceLabel'.\n\n                        More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    name:\n                      description: name of the scrape class.\n                      minLength: 1\n                      type: string\n                    relabelings:\n                      description: |-\n                        relabelings defines the relabeling rules to apply to all scrape targets.\n\n                        The Operator automatically adds relabelings for a few standard Kubernetes fields\n                        like `__meta_kubernetes_namespace` and `__meta_kubernetes_service_name`.\n                        Then the Operator adds the scrape class relabelings defined here.\n                        Then the Operator adds the target-specific relabelings defined in the scrape object.\n\n                        More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    tlsConfig:\n                      description: |-\n                        tlsConfig defines the TLS settings to use for the scrape. When the\n                        scrape objects define their own CA, certificate and/or key, they take\n                        precedence over the corresponding scrape class fields.\n\n                        For now only the `caFile`, `certFile` and `keyFile` fields are supported.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n              scrapeClassicHistograms:\n                description: |-\n                  scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\n\n                  Notice: `scrapeClassicHistograms` corresponds to the `always_scrape_classic_histograms` field in the Prometheus configuration.\n\n                  It requires Prometheus >= v3.5.0.\n                type: boolean\n              scrapeConfigNamespaceSelector:\n                description: |-\n                  scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\n                  matches all namespaces. A null label selector matches the current\n                  namespace only.\n\n                  Note that the ScrapeConfig custom resource definition is currently at Alpha level.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: |-\n                  scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\n                  selector matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n\n                  Note that the ScrapeConfig custom resource definition is currently at Alpha level.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeFailureLogFile:\n                description: |-\n                  scrapeFailureLogFile defines the file to which scrape failures are logged.\n                  Reloading the configuration will reopen the file.\n\n                  If the filename has an empty path, e.g. 'file.log', The Prometheus Pods\n                  will mount the file into an emptyDir volume at `/var/log/prometheus`.\n                  If a full path is provided, e.g. '/var/log/prometheus/file.log', you\n                  must mount a volume in the specified directory and it must be writable.\n                  It requires Prometheus >= v2.55.0.\n                minLength: 1\n                type: string\n              scrapeInterval:\n                default: 30s\n                description: |-\n                  scrapeInterval defines interval between consecutive scrapes.\n\n                  Default: \"30s\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeNativeHistograms:\n                description: |-\n                  scrapeNativeHistograms defines whether to enable scraping of native histograms.\n                  It requires Prometheus >= v3.8.0.\n                type: boolean\n              scrapeProtocols:\n                description: |-\n                  scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\n                  protocols supported by Prometheus in order of preference (from most to least preferred).\n\n                  If unset, Prometheus uses its default value.\n\n                  It requires Prometheus >= v2.49.0.\n\n                  `PrometheusText1.0.0` requires Prometheus >= v3.0.0.\n                items:\n                  description: |-\n                    ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\n                    Supported values are:\n                    * `OpenMetricsText0.0.1`\n                    * `OpenMetricsText1.0.0`\n                    * `PrometheusProto`\n                    * `PrometheusText0.0.4`\n                    * `PrometheusText1.0.0`\n                  enum:\n                  - PrometheusProto\n                  - OpenMetricsText0.0.1\n                  - OpenMetricsText1.0.0\n                  - PrometheusText0.0.4\n                  - PrometheusText1.0.0\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              scrapeTimeout:\n                description: |-\n                  scrapeTimeout defines the number of seconds to wait until a scrape request times out.\n                  The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: |-\n                  secrets defines a list of Secrets in the same namespace as the Prometheus\n                  object, which shall be mounted into the Prometheus Pods.\n                  Each Secret is added to the StatefulSet definition as a volume named `secret-<secret-name>`.\n                  The Secrets are mounted into /etc/prometheus/secrets/<secret-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              securityContext:\n                description: |-\n                  securityContext holds pod-level security attributes and common container settings.\n                  This defaults to the default PodSecurityContext.\n                properties:\n                  appArmorProfile:\n                    description: |-\n                      appArmorProfile is the AppArmor options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile loaded on the node that should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must match the loaded name of the profile.\n                          Must be set if and only if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of AppArmor profile will be applied.\n                          Valid options are:\n                            Localhost - a profile pre-loaded on the node.\n                            RuntimeDefault - the container runtime's default profile.\n                            Unconfined - no AppArmor enforcement.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  fsGroup:\n                    description: |-\n                      A special supplemental group that applies to all containers in a pod.\n                      Some volume types allow the Kubelet to change the ownership of that volume\n                      to be owned by the pod:\n\n                      1. The owning GID will be the FSGroup\n                      2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw----\n\n                      If unset, the Kubelet will not modify the ownership and permissions of any volume.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: |-\n                      fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\n                      before being exposed inside Pod. This field will only apply to\n                      volume types which support fsGroup based ownership(and permissions).\n                      It will have no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir.\n                      Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  runAsGroup:\n                    description: |-\n                      The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: |-\n                      Indicates that the container must run as a non-root user.\n                      If true, the Kubelet will validate the image at runtime to ensure that it\n                      does not run as UID 0 (root) and fail to start the container if it does.\n                      If unset or false, no such validation will be performed.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: |-\n                      The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxChangePolicy:\n                    description: |-\n                      seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.\n                      It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.\n                      Valid values are \"MountOption\" and \"Recursive\".\n\n                      \"Recursive\" means relabeling of all files on all Pod volumes by the container runtime.\n                      This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.\n\n                      \"MountOption\" mounts all eligible Pod volumes with `-o context` mount option.\n                      This requires all Pods that share the same volume to use the same SELinux label.\n                      It is not possible to share the same volume among privileged and unprivileged Pods.\n                      Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes\n                      whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their\n                      CSIDriver instance. Other volumes are always re-labelled recursively.\n                      \"MountOption\" value is allowed only when SELinuxMount feature gate is enabled.\n\n                      If not specified and SELinuxMount feature gate is enabled, \"MountOption\" is used.\n                      If not specified and SELinuxMount feature gate is disabled, \"MountOption\" is used for ReadWriteOncePod volumes\n                      and \"Recursive\" for all other volumes.\n\n                      This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.\n\n                      All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  seLinuxOptions:\n                    description: |-\n                      The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random SELinux context for each\n                      container.  May also be set in SecurityContext.  If set in\n                      both SecurityContext and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: |-\n                      The seccomp options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile defined in a file on the node should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                          Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of seccomp profile will be applied.\n                          Valid options are:\n\n                          Localhost - a profile defined in a file on the node should be used.\n                          RuntimeDefault - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: |-\n                      A list of groups applied to the first process run in each container, in\n                      addition to the container's primary GID and fsGroup (if specified).  If\n                      the SupplementalGroupsPolicy feature is enabled, the\n                      supplementalGroupsPolicy field determines whether these are in addition\n                      to or instead of any group memberships defined in the container image.\n                      If unspecified, no additional groups are added, though group memberships\n                      defined in the container image may still be used, depending on the\n                      supplementalGroupsPolicy field.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  supplementalGroupsPolicy:\n                    description: |-\n                      Defines how supplemental groups of the first container processes are calculated.\n                      Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used.\n                      (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled\n                      and the container runtime must implement support for this feature.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  sysctls:\n                    description: |-\n                      Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\n                      sysctls (by the container runtime) might fail to launch.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  windowsOptions:\n                    description: |-\n                      The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext will be used.\n                      If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                      Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: |-\n                          GMSACredentialSpec is where the GMSA admission webhook\n                          (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                          GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: |-\n                          HostProcess determines if a container should be run as a 'Host Process' container.\n                          All of a Pod's containers must have the same effective HostProcess value\n                          (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                          In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: |-\n                          The UserName in Windows to run the entrypoint of the container process.\n                          Defaults to the user specified in image metadata if unspecified.\n                          May also be set in PodSecurityContext. If set in both SecurityContext and\n                          PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: |-\n                  serviceAccountName is the name of the ServiceAccount to use to run the\n                  Prometheus Pods.\n                type: string\n              serviceDiscoveryRole:\n                description: |-\n                  serviceDiscoveryRole defines the service discovery role used to discover targets from\n                  `ServiceMonitor` objects and Alertmanager endpoints.\n\n                  If set, the value should be either \"Endpoints\" or \"EndpointSlice\".\n                  If unset, the operator assumes the \"Endpoints\" role.\n                enum:\n                - Endpoints\n                - EndpointSlice\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: |-\n                  serviceMonitorNamespaceSelector defines the namespaces to match for ServicedMonitors discovery. An empty label selector\n                  matches all namespaces. A null label selector (default value) matches the current\n                  namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: |-\n                  serviceMonitorSelector defines the serviceMonitors to be selected for target discovery. An empty label\n                  selector matches all objects. A null label selector matches no objects.\n\n                  If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\n                  and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\n                  The Prometheus operator will ensure that the Prometheus configuration's\n                  Secret exists, but it is the responsibility of the user to provide the raw\n                  gzipped Prometheus configuration under the `prometheus.yaml.gz` key.\n                  This behavior is *deprecated* and will be removed in the next major version\n                  of the custom resource definition. It is recommended to use\n                  `spec.additionalScrapeConfigs` instead.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceName:\n                description: |-\n                  serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\n                  If defined, the Service  must be created before the Prometheus/PrometheusAgent resource in the same namespace and it must define a selector that matches the pod labels.\n                  If empty, the operator will create and manage a headless service named `prometheus-operated` for Prometheus resources,\n                  or `prometheus-agent-operated` for PrometheusAgent resources.\n                  When deploying multiple Prometheus/PrometheusAgent resources in the same namespace, it is recommended to specify a different value for each.\n                  See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\n                minLength: 1\n                type: string\n              shards:\n                description: |-\n                  shards defines the number of shards to distribute the scraped targets onto.\n\n                  `spec.replicas` multiplied by `spec.shards` is the total number of Pods\n                  being created.\n\n                  When not defined, the operator assumes only one shard.\n\n                  Note that scaling down shards will not reshard data onto the remaining\n                  instances, it must be manually moved. Increasing shards will not reshard\n                  data either but it will continue to be available from the same\n                  instances. To query globally, use either\n                  * Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n                  * Remote-write to send metrics to a central location.\n\n                  By default, the sharding of targets is performed on:\n                  * The `__address__` target's metadata label for PodMonitor,\n                  ServiceMonitor and ScrapeConfig resources.\n                  * The `__param_target__` label for Probe resources.\n\n                  Users can define their own sharding implementation by setting the\n                  `__tmp_hash` label during the target discovery with relabeling\n                  configuration (either in the monitoring resources or via scrape class).\n\n                  You can also disable sharding on a specific target by setting the\n                  `__tmp_disable_sharding` label with relabeling configuration. When\n                  the label value isn't empty, all Prometheus shards will scrape the target.\n                format: int32\n                type: integer\n              storage:\n                description: storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: 'disableMountSubPath deprecated: subPath usage will be removed in a future release.'\n                    type: boolean\n                  emptyDir:\n                    description: |-\n                      emptyDir to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\n                    properties:\n                      medium:\n                        description: |-\n                          medium represents what type of storage medium should back this directory.\n                          The default is \"\" which means to use the node's default medium.\n                          Must be an empty string (default) or Memory.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                          The size limit is also applicable for memory medium.\n                          The maximum usage on memory medium EmptyDir would be the minimum value between\n                          the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                          The default is nil which means that the limit is undefined.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: |-\n                      ephemeral to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15.\n                      For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate.\n                      More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes\n                    properties:\n                      volumeClaimTemplate:\n                        description: |-\n                          Will be used to create a stand-alone PVC to provision the volume.\n                          The pod in which this EphemeralVolumeSource is embedded will be the\n                          owner of the PVC, i.e. the PVC will be deleted together with the\n                          pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                          `<volume name>` is the name from the `PodSpec.Volumes` array\n                          entry. Pod validation will reject the pod if the concatenated name\n                          is not valid for a PVC (for example, too long).\n\n                          An existing PVC with that name that is not owned by the pod\n                          will *not* be used for the pod to avoid using an unrelated\n                          volume by mistake. Starting the pod is then blocked until\n                          the unrelated PVC is removed. If such a pre-created PVC is\n                          meant to be used by the pod, the PVC has to updated with an\n                          owner reference to the pod once the pod exists. Normally\n                          this should not be necessary, but it may be useful when\n                          manually reconstructing a broken cluster.\n\n                          This field is read-only and no changes will be made by Kubernetes\n                          to the PVC after it has been created.\n\n                          Required, must not be nil.\n                        properties:\n                          metadata:\n                            description: |-\n                              May contain labels and annotations that will be copied into the PVC\n                              when creating it. No other fields are allowed and will be rejected during\n                              validation.\n                            type: object\n                          spec:\n                            description: |-\n                              The specification for the PersistentVolumeClaim. The entire content is\n                              copied unchanged into the PVC that gets created from this\n                              template. The same fields as in a PersistentVolumeClaim\n                              are also valid here.\n                            properties:\n                              accessModes:\n                                description: |-\n                                  accessModes contains the desired access modes the volume should have.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              dataSource:\n                                description: |-\n                                  dataSource field can be used to specify either:\n                                  * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim)\n                                  If the provisioner or an external controller can support the specified data source,\n                                  it will create a new volume based on the contents of the specified data source.\n                                  When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                  and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                  If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: |-\n                                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a non-empty API group (non\n                                  core object) or a PersistentVolumeClaim object.\n                                  When this field is specified, volume binding will only succeed if the type of\n                                  the specified object matches some installed volume populator or dynamic\n                                  provisioner.\n                                  This field will replace the functionality of the dataSource field and as such\n                                  if both fields are non-empty, they must have the same value. For backwards\n                                  compatibility, when namespace isn't specified in dataSourceRef,\n                                  both fields (dataSource and dataSourceRef) will be set to the same\n                                  value automatically if one of them is empty and the other is non-empty.\n                                  When namespace is specified in dataSourceRef,\n                                  dataSource isn't set to the same value and must be empty.\n                                  There are three important differences between dataSource and dataSourceRef:\n                                  * While dataSource only allows two specific types of objects, dataSourceRef\n                                    allows any non-core object, as well as PersistentVolumeClaim objects.\n                                  * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                    preserves all values, and generates an error if a disallowed value is\n                                    specified.\n                                  * While dataSource only allows local objects, dataSourceRef allows objects\n                                    in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                  (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: |-\n                                      Namespace is the namespace of resource being referenced\n                                      Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                      (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: |-\n                                  resources represents the minimum resources the volume should have.\n                                  Users are allowed to specify resource requirements\n                                  that are lower than previous value but must still be higher than capacity recorded in the\n                                  status field of the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                properties:\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Limits describes the maximum amount of compute resources allowed.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Requests describes the minimum amount of compute resources required.\n                                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: |-\n                                        A label selector requirement is a selector that contains values, a key, and an operator that\n                                        relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: |-\n                                            operator represents a key's relationship to a set of values.\n                                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: |-\n                                            values is an array of string values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array is replaced during a strategic\n                                            merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: |-\n                                  storageClassName is the name of the StorageClass required by the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                type: string\n                              volumeAttributesClassName:\n                                description: |-\n                                  volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                  If specified, the CSI driver will create or update the volume with the attributes defined\n                                  in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                  it can be changed after the claim is created. An empty string or nil value indicates that no\n                                  VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                  this field can be reset to its previous value (including nil) to cancel the modification.\n                                  If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                  set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                  exists.\n                                  More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                type: string\n                              volumeMode:\n                                description: |-\n                                  volumeMode defines what type of volume is required by the claim.\n                                  Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: |-\n                      volumeClaimTemplate defines the PVC spec to be used by the Prometheus StatefulSets.\n                      The easiest way to use a volume that cannot be automatically provisioned\n                      is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: |-\n                          APIVersion defines the versioned schema of this representation of an object.\n                          Servers should convert recognized schemas to the latest internal value, and\n                          may reject unrecognized values.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n                        type: string\n                      kind:\n                        description: |-\n                          Kind is a string value representing the REST resource this object represents.\n                          Servers may infer this from the endpoint the client submits requests to.\n                          Cannot be updated.\n                          In CamelCase.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n                        type: string\n                      metadata:\n                        description: metadata defines EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              annotations defines an unstructured key value map stored with a resource that may be\n                              set by external tools to store and retrieve arbitrary metadata. They are not\n                              queryable and should be preserved when modifying objects.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              labels define the map of string keys and values that can be used to organize and categorize\n                              (scope and select) objects. May match selectors of replication controllers\n                              and services.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                            type: object\n                          name:\n                            description: |-\n                              name must be unique within a namespace. Is required when creating resources, although\n                              some resources may allow a client to request the generation of an appropriate name\n                              automatically. Name is primarily intended for creation idempotence and configuration\n                              definition.\n                              Cannot be updated.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                            type: string\n                        type: object\n                      spec:\n                        description: |-\n                          spec defines the specification of the  characteristics of a volume requested by a pod author.\n                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the desired access modes the volume should have.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          dataSource:\n                            description: |-\n                              dataSource field can be used to specify either:\n                              * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim)\n                              If the provisioner or an external controller can support the specified data source,\n                              it will create a new volume based on the contents of the specified data source.\n                              When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                              and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                              If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: |-\n                              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty API group (non\n                              core object) or a PersistentVolumeClaim object.\n                              When this field is specified, volume binding will only succeed if the type of\n                              the specified object matches some installed volume populator or dynamic\n                              provisioner.\n                              This field will replace the functionality of the dataSource field and as such\n                              if both fields are non-empty, they must have the same value. For backwards\n                              compatibility, when namespace isn't specified in dataSourceRef,\n                              both fields (dataSource and dataSourceRef) will be set to the same\n                              value automatically if one of them is empty and the other is non-empty.\n                              When namespace is specified in dataSourceRef,\n                              dataSource isn't set to the same value and must be empty.\n                              There are three important differences between dataSource and dataSourceRef:\n                              * While dataSource only allows two specific types of objects, dataSourceRef\n                                allows any non-core object, as well as PersistentVolumeClaim objects.\n                              * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                preserves all values, and generates an error if a disallowed value is\n                                specified.\n                              * While dataSource only allows local objects, dataSourceRef allows objects\n                                in any namespaces.\n                              (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                              (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: |-\n                                  Namespace is the namespace of resource being referenced\n                                  Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                  (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: |-\n                              resources represents the minimum resources the volume should have.\n                              Users are allowed to specify resource requirements\n                              that are lower than previous value but must still be higher than capacity recorded in the\n                              status field of the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                            properties:\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Limits describes the maximum amount of compute resources allowed.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Requests describes the minimum amount of compute resources required.\n                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: |-\n                                    A label selector requirement is a selector that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: |-\n                                        operator represents a key's relationship to a set of values.\n                                        Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: |-\n                                        values is an array of string values. If the operator is In or NotIn,\n                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                        the values array must be empty. This array is replaced during a strategic\n                                        merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: |-\n                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                  map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                  operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: |-\n                              storageClassName is the name of the StorageClass required by the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                            type: string\n                          volumeAttributesClassName:\n                            description: |-\n                              volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                              If specified, the CSI driver will create or update the volume with the attributes defined\n                              in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                              it can be changed after the claim is created. An empty string or nil value indicates that no\n                              VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                              this field can be reset to its previous value (including nil) to cancel the modification.\n                              If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                              set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                              exists.\n                              More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                            type: string\n                          volumeMode:\n                            description: |-\n                              volumeMode defines what type of volume is required by the claim.\n                              Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: 'status is deprecated: this field is never set.'\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the actual access modes the volume backing the PVC has.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          allocatedResourceStatuses:\n                            additionalProperties:\n                              description: |-\n                                When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\n                                that it does not recognizes, then it should ignore that update and let other controllers\n                                handle it.\n                              type: string\n                            description: \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                            x-kubernetes-map-type: granular\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: |-\n                              conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'Resizing'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: |-\n                                    reason is a unique, this should be a short, machine understandable string that gives the reason\n                                    for condition's last transition. If it reports \"Resizing\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  description: |-\n                                    Status is the status of the condition.\n                                    Can be True, False, Unknown.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required\n                                  type: string\n                                type:\n                                  description: |-\n                                    Type is the type of the condition.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                            x-kubernetes-list-map-keys:\n                            - type\n                            x-kubernetes-list-type: map\n                          currentVolumeAttributesClassName:\n                            description: |-\n                              currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\n                              When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\n                            type: string\n                          modifyVolumeStatus:\n                            description: |-\n                              ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\n                              When this is unset, there is no ModifyVolume operation being attempted.\n                            properties:\n                              status:\n                                description: \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n   Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n   the specified VolumeAttributesClass not existing.\\n - InProgress\\n   InProgress indicates that the volume is being modified.\\n - Infeasible\\n  Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t  resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\"\n                                type: string\n                              targetVolumeAttributesClassName:\n                                description: targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\n                                type: string\n                            required:\n                            - status\n                            type: object\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              targetLimit:\n                description: |-\n                  targetLimit defines a limit on the number of scraped targets that will be accepted.\n                  Only valid in Prometheus versions 2.45.0 and newer.\n\n                  Note that the global limit only applies to scrape objects that don't specify an explicit limit value.\n                  If you want to enforce a maximum limit for all scrape objects, refer to enforcedTargetLimit.\n                format: int64\n                type: integer\n              terminationGracePeriodSeconds:\n                description: |-\n                  terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\n                  Value must be non-negative integer. The value zero indicates stop immediately via\n                  the kill signal (no opportunity to shut down) which may lead to data corruption.\n\n                  Defaults to 600 seconds.\n                format: int64\n                minimum: 0\n                type: integer\n              tolerations:\n                description: tolerations defines the Pods' tolerations if specified.\n                items:\n                  description: |-\n                    The pod this Toleration is attached to tolerates any taint that matches\n                    the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: |-\n                        Effect indicates the taint effect to match. Empty means match all taint effects.\n                        When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: |-\n                        Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                        If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: |-\n                        Operator represents a key's relationship to the value.\n                        Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod can\n                        tolerate all taints of a particular category.\n                        Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).\n                      type: string\n                    tolerationSeconds:\n                      description: |-\n                        TolerationSeconds represents the period of time the toleration (which must be\n                        of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                        it is not set, which means tolerate the taint forever (do not evict). Zero and\n                        negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: |-\n                        Value is the taint value the toleration matches to.\n                        If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: topologySpreadConstraints defines the pod's topology spread constraints if specified.\n                items:\n                  properties:\n                    additionalLabelSelectors:\n                      description: additionalLabelSelectors Defines what Prometheus Operator managed labels should be added to labelSelector on the topologySpreadConstraint.\n                      enum:\n                      - OnResource\n                      - OnShard\n                      type: string\n                    labelSelector:\n                      description: |-\n                        LabelSelector is used to find matching pods.\n                        Pods that match this label selector are counted to determine the number of pods\n                        in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: |-\n                              A label selector requirement is a selector that contains values, a key, and an operator that\n                              relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: |-\n                                  operator represents a key's relationship to a set of values.\n                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: |-\n                                  values is an array of string values. If the operator is In or NotIn,\n                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                  the values array must be empty. This array is replaced during a strategic\n                                  merge patch.\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: |-\n                        MatchLabelKeys is a set of pod label keys to select the pods over which\n                        spreading will be calculated. The keys are used to lookup values from the\n                        incoming pod labels, those key-value labels are ANDed with labelSelector\n                        to select the group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\n                        MatchLabelKeys cannot be set when LabelSelector isn't set.\n                        Keys that don't exist in the incoming pod labels will\n                        be ignored. A null or empty list means only match against labelSelector.\n\n                        This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: |-\n                        MaxSkew describes the degree to which pods may be unevenly distributed.\n                        When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\n                        between the number of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods in an eligible domain\n                        or zero if the number of eligible domains is less than MinDomains.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 2/2/1:\n                        In this case, the global minimum is 1.\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |   P   |\n                        - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\n                        scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\n                        violate MaxSkew(1).\n                        - if MaxSkew is 2, incoming pod can be scheduled onto any zone.\n                        When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\n                        to topologies that satisfy it.\n                        It's a required field. Default value is 1 and 0 is not allowed.\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: |-\n                        MinDomains indicates a minimum number of eligible domains.\n                        When the number of eligible domains with matching topology keys is less than minDomains,\n                        Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed.\n                        And when the number of eligible domains with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling.\n                        As a result, when the number of eligible domains is less than minDomains,\n                        scheduler won't schedule more than maxSkew Pods to those domains.\n                        If value is nil, the constraint behaves as if MinDomains is equal to 1.\n                        Valid values are integers greater than 0.\n                        When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\n                        For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\n                        labelSelector spread as 2/2/2:\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0.\n                        In this situation, new pod with the same labelSelector cannot be scheduled,\n                        because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\n                        it will violate MaxSkew.\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: |-\n                        NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\n                        when calculating pod topology spread skew. Options are:\n                        - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\n                        - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\n                        If this value is nil, the behavior is equivalent to the Honor policy.\n                      type: string\n                    nodeTaintsPolicy:\n                      description: |-\n                        NodeTaintsPolicy indicates how we will treat node taints when calculating\n                        pod topology spread skew. Options are:\n                        - Honor: nodes without taints, along with tainted nodes for which the incoming pod\n                        has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n\n                        If this value is nil, the behavior is equivalent to the Ignore policy.\n                      type: string\n                    topologyKey:\n                      description: |-\n                        TopologyKey is the key of node labels. Nodes that have a label with this key\n                        and identical values are considered to be in the same topology.\n                        We consider each <key, value> as a \"bucket\", and try to put balanced number\n                        of pods into each bucket.\n                        We define a domain as a particular instance of a topology.\n                        Also, we define an eligible domain as a domain whose nodes meet the requirements of\n                        nodeAffinityPolicy and nodeTaintsPolicy.\n                        e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology.\n                        And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology.\n                        It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: |-\n                        WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\n                        the spread constraint.\n                        - DoNotSchedule (default) tells the scheduler not to schedule it.\n                        - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n                          but giving higher precedence to topologies that would help reduce the\n                          skew.\n                        A constraint is considered \"Unsatisfiable\" for an incoming pod\n                        if and only if every possible node assignment for that pod would violate\n                        \"MaxSkew\" on some topology.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 3/1/1:\n                        | zone1 | zone2 | zone3 |\n                        | P P P |   P   |   P   |\n                        If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\n                        to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\n                        MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\n                        won't make it *more* imbalanced.\n                        It's a required field.\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: |-\n                  tracingConfig defines tracing in Prometheus.\n\n                  This is an *experimental feature*, it may change in any upcoming release\n                  in a breaking way.\n                properties:\n                  clientType:\n                    description: clientType defines the client used to export the traces. Supported values are `HTTP` and `GRPC`.\n                    enum:\n                    - http\n                    - grpc\n                    - HTTP\n                    - GRPC\n                    type: string\n                  compression:\n                    description: compression key for supported compression types. The only supported value is `Gzip`.\n                    enum:\n                    - gzip\n                    - Gzip\n                    type: string\n                  endpoint:\n                    description: endpoint to send the traces to. Should be provided in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: headers defines the key-value pairs to be used as headers associated with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: insecure if disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: samplingFraction defines the probability a given trace will be sampled. Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: timeout defines the maximum time the exporter will wait for each batch export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: tlsConfig to use when sending traces.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              tsdb:\n                description: |-\n                  tsdb defines the runtime reloadable configuration of the timeseries database(TSDB).\n                  It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.\n                properties:\n                  outOfOrderTimeWindow:\n                    description: |-\n                      outOfOrderTimeWindow defines how old an out-of-order/out-of-bounds sample can be with\n                      respect to the TSDB max time.\n\n                      An out-of-order/out-of-bounds sample is ingested into the TSDB as long as\n                      the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow).\n\n                      This is an *experimental feature*, it may change in any upcoming release\n                      in a breaking way.\n\n                      It requires Prometheus >= v2.39.0 or PrometheusAgent >= v2.54.0.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              updateStrategy:\n                description: |-\n                  updateStrategy indicates the strategy that will be employed to update\n                  Pods in the StatefulSet when a revision is made to statefulset's Pod\n                  Template.\n\n                  The default strategy is RollingUpdate.\n                properties:\n                  rollingUpdate:\n                    description: rollingUpdate is used to communicate parameters when type is RollingUpdate.\n                    properties:\n                      maxUnavailable:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          maxUnavailable is the maximum number of pods that can be unavailable\n                          during the update. The value can be an absolute number (ex: 5) or a\n                          percentage of desired pods (ex: 10%). Absolute number is calculated from\n                          percentage by rounding up. This can not be 0.  Defaults to 1. This field\n                          is alpha-level and is only honored by servers that enable the\n                          MaxUnavailableStatefulSet feature. The field applies to all pods in the\n                          range 0 to Replicas-1.  That means if there is any unavailable pod in\n                          the range 0 to Replicas-1, it will be counted towards MaxUnavailable.\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  type:\n                    description: |-\n                      type indicates the type of the StatefulSetUpdateStrategy.\n\n                      Default is RollingUpdate.\n                    enum:\n                    - OnDelete\n                    - RollingUpdate\n                    type: string\n                required:\n                - type\n                type: object\n                x-kubernetes-validations:\n                - message: rollingUpdate requires type to be RollingUpdate\n                  rule: '!(self.type != ''RollingUpdate'' && has(self.rollingUpdate))'\n              version:\n                description: |-\n                  version of Prometheus being deployed. The operator uses this information\n                  to generate the Prometheus StatefulSet + configuration files.\n\n                  If not specified, the operator assumes the latest upstream version of\n                  Prometheus available at the time when the version of the operator was\n                  released.\n                type: string\n              volumeMounts:\n                description: |-\n                  volumeMounts allows the configuration of additional VolumeMounts.\n\n                  VolumeMounts will be appended to other VolumeMounts in the 'prometheus'\n                  container, that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: |-\n                        Path within the container at which the volume should be mounted.  Must\n                        not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: |-\n                        mountPropagation determines how mounts are propagated from the host\n                        to container and the other way around.\n                        When not set, MountPropagationNone is used.\n                        This field is beta in 1.10.\n                        When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                        (which defaults to None).\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: |-\n                        Mounted read-only if true, read-write otherwise (false or unspecified).\n                        Defaults to false.\n                      type: boolean\n                    recursiveReadOnly:\n                      description: |-\n                        RecursiveReadOnly specifies whether read-only mounts should be handled\n                        recursively.\n\n                        If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                        If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                        recursively read-only.  If this field is set to IfPossible, the mount is made\n                        recursively read-only, if it is supported by the container runtime.  If this\n                        field is set to Enabled, the mount is made recursively read-only if it is\n                        supported by the container runtime, otherwise the pod will not be started and\n                        an error will be generated to indicate the reason.\n\n                        If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                        None (or be unspecified, which defaults to None).\n\n                        If this field is not specified, it is treated as an equivalent of Disabled.\n                      type: string\n                    subPath:\n                      description: |-\n                        Path within the volume from which the container's volume should be mounted.\n                        Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: |-\n                        Expanded path within the volume from which the container's volume should be mounted.\n                        Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                        Defaults to \"\" (volume's root).\n                        SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: |-\n                  volumes allows the configuration of additional volumes on the output\n                  StatefulSet definition. Volumes specified will be appended to other\n                  volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: |-\n                        awsElasticBlockStore represents an AWS Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree\n                        awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly value true will force the readOnly setting in VolumeMounts.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: boolean\n                        volumeID:\n                          description: |-\n                            volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: |-\n                        azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                        Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type\n                        are redirected to the disk.csi.azure.com CSI driver.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          default: ext4\n                          description: |-\n                            fsType is Filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          default: false\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: |-\n                        azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                        Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type\n                        are redirected to the file.csi.azure.com CSI driver.\n                      properties:\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: |-\n                        cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.\n                        Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.\n                      properties:\n                        monitors:\n                          description: |-\n                            monitors is Required: Monitors is a collection of Ceph monitors\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: boolean\n                        secretFile:\n                          description: |-\n                            secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: |-\n                            user is optional: User is the rados user name, default is admin\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: |-\n                        cinder represents a cinder volume attached and mounted on kubelets host machine.\n                        Deprecated: Cinder is deprecated. All operations for the in-tree cinder type\n                        are redirected to the cinder.csi.openstack.org CSI driver.\n                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is optional: points to a secret object containing parameters used to connect\n                            to OpenStack.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: |-\n                            volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items if unspecified, each key-value pair in the Data field of the referenced\n                            ConfigMap will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the ConfigMap,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers.\n                      properties:\n                        driver:\n                          description: |-\n                            driver is the name of the CSI driver that handles this volume.\n                            Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated CSI driver\n                            which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: |-\n                            nodePublishSecretRef is a reference to the secret object containing\n                            sensitive information to pass to the CSI driver to complete the CSI\n                            NodePublishVolume and NodeUnpublishVolume calls.\n                            This field is optional, and  may be empty if no secret is required. If the\n                            secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly specifies a read-only configuration for the volume.\n                            Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            volumeAttributes stores driver-specific properties that are passed to the CSI\n                            driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            Optional: mode bits to use on created files by default. Must be a\n                            Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: |-\n                                  Optional: mode bits used to set permissions on this file, must be an octal value\n                                  between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    emptyDir:\n                      description: |-\n                        emptyDir represents a temporary directory that shares a pod's lifetime.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                      properties:\n                        medium:\n                          description: |-\n                            medium represents what type of storage medium should back this directory.\n                            The default is \"\" which means to use the node's default medium.\n                            Must be an empty string (default) or Memory.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: |-\n                            sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                            The size limit is also applicable for memory medium.\n                            The maximum usage on memory medium EmptyDir would be the minimum value between\n                            the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                            The default is nil which means that the limit is undefined.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: |-\n                        ephemeral represents a volume that is handled by a cluster storage driver.\n                        The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\n                        and deleted when the pod is removed.\n\n                        Use this if:\n                        a) the volume is only needed while the pod runs,\n                        b) features of normal volumes like restoring from snapshot or capacity\n                           tracking are needed,\n                        c) the storage driver is specified through a storage class, and\n                        d) the storage driver supports dynamic volume provisioning through\n                           a PersistentVolumeClaim (see EphemeralVolumeSource for more\n                           information on the connection between this volume type\n                           and PersistentVolumeClaim).\n\n                        Use PersistentVolumeClaim or one of the vendor-specific\n                        APIs for volumes that persist for longer than the lifecycle\n                        of an individual pod.\n\n                        Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to\n                        be used that way - see the documentation of the driver for\n                        more information.\n\n                        A pod can use both types of ephemeral volumes and\n                        persistent volumes at the same time.\n                      properties:\n                        volumeClaimTemplate:\n                          description: |-\n                            Will be used to create a stand-alone PVC to provision the volume.\n                            The pod in which this EphemeralVolumeSource is embedded will be the\n                            owner of the PVC, i.e. the PVC will be deleted together with the\n                            pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                            `<volume name>` is the name from the `PodSpec.Volumes` array\n                            entry. Pod validation will reject the pod if the concatenated name\n                            is not valid for a PVC (for example, too long).\n\n                            An existing PVC with that name that is not owned by the pod\n                            will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC is\n                            meant to be used by the pod, the PVC has to updated with an\n                            owner reference to the pod once the pod exists. Normally\n                            this should not be necessary, but it may be useful when\n                            manually reconstructing a broken cluster.\n\n                            This field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created.\n\n                            Required, must not be nil.\n                          properties:\n                            metadata:\n                              description: |-\n                                May contain labels and annotations that will be copied into the PVC\n                                when creating it. No other fields are allowed and will be rejected during\n                                validation.\n                              type: object\n                            spec:\n                              description: |-\n                                The specification for the PersistentVolumeClaim. The entire content is\n                                copied unchanged into the PVC that gets created from this\n                                template. The same fields as in a PersistentVolumeClaim\n                                are also valid here.\n                              properties:\n                                accessModes:\n                                  description: |-\n                                    accessModes contains the desired access modes the volume should have.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                dataSource:\n                                  description: |-\n                                    dataSource field can be used to specify either:\n                                    * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim)\n                                    If the provisioner or an external controller can support the specified data source,\n                                    it will create a new volume based on the contents of the specified data source.\n                                    When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                    and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                    If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: |-\n                                    dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                    volume is desired. This may be any object from a non-empty API group (non\n                                    core object) or a PersistentVolumeClaim object.\n                                    When this field is specified, volume binding will only succeed if the type of\n                                    the specified object matches some installed volume populator or dynamic\n                                    provisioner.\n                                    This field will replace the functionality of the dataSource field and as such\n                                    if both fields are non-empty, they must have the same value. For backwards\n                                    compatibility, when namespace isn't specified in dataSourceRef,\n                                    both fields (dataSource and dataSourceRef) will be set to the same\n                                    value automatically if one of them is empty and the other is non-empty.\n                                    When namespace is specified in dataSourceRef,\n                                    dataSource isn't set to the same value and must be empty.\n                                    There are three important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types of objects, dataSourceRef\n                                      allows any non-core object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                      preserves all values, and generates an error if a disallowed value is\n                                      specified.\n                                    * While dataSource only allows local objects, dataSourceRef allows objects\n                                      in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                    (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: |-\n                                        Namespace is the namespace of resource being referenced\n                                        Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                        (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: |-\n                                    resources represents the minimum resources the volume should have.\n                                    Users are allowed to specify resource requirements\n                                    that are lower than previous value but must still be higher than capacity recorded in the\n                                    status field of the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                  properties:\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Limits describes the maximum amount of compute resources allowed.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Requests describes the minimum amount of compute resources required.\n                                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                        otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: |-\n                                    storageClassName is the name of the StorageClass required by the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                  type: string\n                                volumeAttributesClassName:\n                                  description: |-\n                                    volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                    If specified, the CSI driver will create or update the volume with the attributes defined\n                                    in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                    it can be changed after the claim is created. An empty string or nil value indicates that no\n                                    VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                    this field can be reset to its previous value (including nil) to cancel the modification.\n                                    If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                    set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                    exists.\n                                    More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                  type: string\n                                volumeMode:\n                                  description: |-\n                                    volumeMode defines what type of volume is required by the claim.\n                                    Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        wwids:\n                          description: |-\n                            wwids Optional: FC volume world wide identifiers (wwids)\n                            Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    flexVolume:\n                      description: |-\n                        flexVolume represents a generic volume resource that is\n                        provisioned/attached using an exec based plugin.\n                        Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: secretRef is reference to the secret object containing\n                            sensitive information to pass to the plugin scripts. This may be\n                            empty if no secret object is specified. If the secret object\n                            contains more than one secret, all secrets are passed to the plugin\n                            scripts.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: |-\n                        flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.\n                        Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.\n                      properties:\n                        datasetName:\n                          description: |-\n                            datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker\n                            should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: |-\n                        gcePersistentDisk represents a GCE Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree\n                        gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: |-\n                            pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: |-\n                        gitRepo represents a git repository at a particular revision.\n                        Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an\n                        EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\n                        into the Pod's container.\n                      properties:\n                        directory:\n                          description: |-\n                            directory is the target directory name.\n                            Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the\n                            git repository.  Otherwise, if specified, the volume will contain the git repository in\n                            the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: |-\n                        glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\n                        Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.\n                      properties:\n                        endpoints:\n                          description: endpoints is the endpoint name that details Glusterfs topology.\n                          type: string\n                        path:\n                          description: |-\n                            path is the Glusterfs volume path.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: |-\n                        hostPath represents a pre-existing file or directory on the host\n                        machine that is directly exposed to the container. This is generally\n                        used for system agents or other privileged things that are allowed\n                        to see the host machine. Most containers will NOT need this.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                      properties:\n                        path:\n                          description: |-\n                            path of the directory on the host.\n                            If the path is a symlink, it will follow the link to the real path.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                        type:\n                          description: |-\n                            type for HostPath Volume\n                            Defaults to \"\"\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    image:\n                      description: |-\n                        image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.\n                        The volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n                        - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                        - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                        - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\n                        The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.\n                        A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.\n                        The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.\n                        The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.\n                        The volume will be mounted read-only (ro) and non-executable files (noexec).\n                        Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.\n                        The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.\n                      properties:\n                        pullPolicy:\n                          description: |-\n                            Policy for pulling OCI objects. Possible values are:\n                            Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                            Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                            IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n                            Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                          type: string\n                        reference:\n                          description: |-\n                            Required: Image or artifact reference to be used.\n                            Behaves in the same way as pod.spec.containers[*].image.\n                            Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.\n                            More info: https://kubernetes.io/docs/concepts/containers/images\n                            This field is optional to allow higher level config management to default or override\n                            container images in workload controllers like Deployments and StatefulSets.\n                          type: string\n                      type: object\n                    iscsi:\n                      description: |-\n                        iscsi represents an ISCSI Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                          type: string\n                        initiatorName:\n                          description: |-\n                            initiatorName is the custom iSCSI Initiator Name.\n                            If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n                            <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          default: default\n                          description: |-\n                            iscsiInterface is the interface Name that uses an iSCSI transport.\n                            Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: |-\n                            portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: |-\n                            targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: |-\n                        name of the volume.\n                        Must be a DNS_LABEL and unique within the pod.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                    nfs:\n                      description: |-\n                        nfs represents an NFS mount on the host that shares a pod's lifetime\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                      properties:\n                        path:\n                          description: |-\n                            path that is exported by the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the NFS export to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: boolean\n                        server:\n                          description: |-\n                            server is the hostname or IP address of the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: |-\n                        persistentVolumeClaimVolumeSource represents a reference to a\n                        PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                      properties:\n                        claimName:\n                          description: |-\n                            claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\n                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Will force the ReadOnly setting in VolumeMounts.\n                            Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: |-\n                        photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.\n                        Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: |-\n                        portworxVolume represents a portworx volume attached and mounted on kubelets host machine.\n                        Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type\n                        are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate\n                        is on.\n                      properties:\n                        fsType:\n                          description: |-\n                            fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode are the mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: |-\n                            sources is the list of volume projections. Each entry in this list\n                            handles one source.\n                          items:\n                            description: |-\n                              Projection that may be projected along with other supported volume types.\n                              Exactly one of these fields must be set.\n                            properties:\n                              clusterTrustBundle:\n                                description: |-\n                                  ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\n                                  of ClusterTrustBundle objects in an auto-updating file.\n\n                                  Alpha, gated by the ClusterTrustBundleProjection feature gate.\n\n                                  ClusterTrustBundle objects can either be selected by name, or by the\n                                  combination of signer name and a label selector.\n\n                                  Kubelet performs aggressive normalization of the PEM contents written\n                                  into the pod filesystem.  Esoteric PEM features such as inter-block\n                                  comments and block headers are stripped.  Certificates are deduplicated.\n                                  The ordering of certificates within the file is arbitrary, and Kubelet\n                                  may change the order over time.\n                                properties:\n                                  labelSelector:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this label selector.  Only has\n                                      effect if signerName is set.  Mutually-exclusive with name.  If unset,\n                                      interpreted as \"match nothing\".  If set but empty, interpreted as \"match\n                                      everything\".\n                                    properties:\n                                      matchExpressions:\n                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                        items:\n                                          description: |-\n                                            A label selector requirement is a selector that contains values, a key, and an operator that\n                                            relates the key and values.\n                                          properties:\n                                            key:\n                                              description: key is the label key that the selector applies to.\n                                              type: string\n                                            operator:\n                                              description: |-\n                                                operator represents a key's relationship to a set of values.\n                                                Valid operators are In, NotIn, Exists and DoesNotExist.\n                                              type: string\n                                            values:\n                                              description: |-\n                                                values is an array of string values. If the operator is In or NotIn,\n                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                the values array must be empty. This array is replaced during a strategic\n                                                merge patch.\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        description: |-\n                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                          map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                          operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  name:\n                                    description: |-\n                                      Select a single ClusterTrustBundle by object name.  Mutually-exclusive\n                                      with signerName and labelSelector.\n                                    type: string\n                                  optional:\n                                    description: |-\n                                      If true, don't block pod startup if the referenced ClusterTrustBundle(s)\n                                      aren't available.  If using name, then the named ClusterTrustBundle is\n                                      allowed not to exist.  If using signerName, then the combination of\n                                      signerName and labelSelector is allowed to match zero\n                                      ClusterTrustBundles.\n                                    type: boolean\n                                  path:\n                                    description: Relative path from the volume root to write the bundle.\n                                    type: string\n                                  signerName:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this signer name.\n                                      Mutually-exclusive with name.  The contents of all selected\n                                      ClusterTrustBundles will be unified and deduplicated.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      ConfigMap will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the ConfigMap,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: |-\n                                            Optional: mode bits used to set permissions on this file, must be an octal value\n                                            between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: |-\n                                            Selects a resource of the container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                type: object\n                              podCertificate:\n                                description: |-\n                                  Projects an auto-rotating credential bundle (private key and certificate\n                                  chain) that the pod can use either as a TLS client or server.\n\n                                  Kubelet generates a private key and uses it to send a\n                                  PodCertificateRequest to the named signer.  Once the signer approves the\n                                  request and issues a certificate chain, Kubelet writes the key and\n                                  certificate chain to the pod filesystem.  The pod does not start until\n                                  certificates have been issued for each podCertificate projected volume\n                                  source in its spec.\n\n                                  Kubelet will begin trying to rotate the certificate at the time indicated\n                                  by the signer using the PodCertificateRequest.Status.BeginRefreshAt\n                                  timestamp.\n\n                                  Kubelet can write a single file, indicated by the credentialBundlePath\n                                  field, or separate files, indicated by the keyPath and\n                                  certificateChainPath fields.\n\n                                  The credential bundle is a single file in PEM format.  The first PEM\n                                  entry is the private key (in PKCS#8 format), and the remaining PEM\n                                  entries are the certificate chain issued by the signer (typically,\n                                  signers will return their certificate chain in leaf-to-root order).\n\n                                  Prefer using the credential bundle format, since your application code\n                                  can read it atomically.  If you use keyPath and certificateChainPath,\n                                  your application must make two separate file reads. If these coincide\n                                  with a certificate rotation, it is possible that the private key and leaf\n                                  certificate you read may not correspond to each other.  Your application\n                                  will need to check for this condition, and re-read until they are\n                                  consistent.\n\n                                  The named signer controls chooses the format of the certificate it\n                                  issues; consult the signer implementation's documentation to learn how to\n                                  use the certificates it issues.\n                                properties:\n                                  certificateChainPath:\n                                    description: |-\n                                      Write the certificate chain at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  credentialBundlePath:\n                                    description: |-\n                                      Write the credential bundle at this path in the projected volume.\n\n                                      The credential bundle is a single file that contains multiple PEM blocks.\n                                      The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private\n                                      key.\n\n                                      The remaining blocks are CERTIFICATE blocks, containing the issued\n                                      certificate chain from the signer (leaf and any intermediates).\n\n                                      Using credentialBundlePath lets your Pod's application code make a single\n                                      atomic read that retrieves a consistent key and certificate chain.  If you\n                                      project them to separate files, your application code will need to\n                                      additionally check that the leaf certificate was issued to the key.\n                                    type: string\n                                  keyPath:\n                                    description: |-\n                                      Write the key at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  keyType:\n                                    description: |-\n                                      The type of keypair Kubelet will generate for the pod.\n\n                                      Valid values are \"RSA3072\", \"RSA4096\", \"ECDSAP256\", \"ECDSAP384\",\n                                      \"ECDSAP521\", and \"ED25519\".\n                                    type: string\n                                  maxExpirationSeconds:\n                                    description: |-\n                                      maxExpirationSeconds is the maximum lifetime permitted for the\n                                      certificate.\n\n                                      Kubelet copies this value verbatim into the PodCertificateRequests it\n                                      generates for this projection.\n\n                                      If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver\n                                      will reject values shorter than 3600 (1 hour).  The maximum allowable\n                                      value is 7862400 (91 days).\n\n                                      The signer implementation is then free to issue a certificate with any\n                                      lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600\n                                      seconds (1 hour).  This constraint is enforced by kube-apiserver.\n                                      `kubernetes.io` signers will never issue certificates with a lifetime\n                                      longer than 24 hours.\n                                    format: int32\n                                    type: integer\n                                  signerName:\n                                    description: Kubelet's generated CSRs will be addressed to this signer.\n                                    type: string\n                                  userAnnotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      userAnnotations allow pod authors to pass additional information to\n                                      the signer implementation.  Kubernetes does not restrict or validate this\n                                      metadata in any way.\n\n                                      These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of\n                                      the PodCertificateRequest objects that Kubelet creates.\n\n                                      Entries are subject to the same validation as object metadata annotations,\n                                      with the addition that all keys must be domain-prefixed. No restrictions\n                                      are placed on values, except an overall size limitation on the entire field.\n\n                                      Signers should document the keys and values they support. Signers should\n                                      deny requests that contain keys they do not recognize.\n                                    type: object\n                                required:\n                                - keyType\n                                - signerName\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      Secret will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the Secret,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: |-\n                                      audience is the intended audience of the token. A recipient of a token\n                                      must identify itself with an identifier specified in the audience of the\n                                      token, and otherwise should reject the token. The audience defaults to the\n                                      identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: |-\n                                      expirationSeconds is the requested duration of validity of the service\n                                      account token. As the token approaches expiration, the kubelet volume\n                                      plugin will proactively rotate the service account token. The kubelet will\n                                      start trying to rotate the token if the token is older than 80 percent of\n                                      its time to live or if the token is older than 24 hours.Defaults to 1 hour\n                                      and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: |-\n                                      path is the path relative to the mount point of the file to project the\n                                      token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    quobyte:\n                      description: |-\n                        quobyte represents a Quobyte mount on the host that shares a pod's lifetime.\n                        Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.\n                      properties:\n                        group:\n                          description: |-\n                            group to map volume access to\n                            Default is no group\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Quobyte volume to be mounted with read-only permissions.\n                            Defaults to false.\n                          type: boolean\n                        registry:\n                          description: |-\n                            registry represents a single or multiple Quobyte Registry services\n                            specified as a string as host:port pair (multiple entries are separated with commas)\n                            which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: |-\n                            tenant owning the given Quobyte volume in the Backend\n                            Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: |-\n                            user to map volume access to\n                            Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: |-\n                        rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\n                        Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                          type: string\n                        image:\n                          description: |-\n                            image is the rados image name.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        keyring:\n                          default: /etc/ceph/keyring\n                          description: |-\n                            keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        monitors:\n                          description: |-\n                            monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        pool:\n                          default: rbd\n                          description: |-\n                            pool is the rados pool name.\n                            Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is name of the authentication secret for RBDUser. If provided\n                            overrides keyring.\n                            Default is nil.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          default: admin\n                          description: |-\n                            user is the rados user name.\n                            Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: |-\n                        scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                        Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.\n                      properties:\n                        fsType:\n                          default: xfs\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef references to the secret for ScaleIO user and other\n                            sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          default: ThinProvisioned\n                          description: |-\n                            storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: |-\n                            volumeName is the name of a volume already created in the ScaleIO system\n                            that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: |-\n                        secret represents a secret that should populate this volume.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values\n                            for mode bits. Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items If unspecified, each key-value pair in the Data field of the referenced\n                            Secret will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the Secret,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: |-\n                            secretName is the name of the secret in the pod's namespace to use.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                          type: string\n                      type: object\n                    storageos:\n                      description: |-\n                        storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                        Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef specifies the secret to use for obtaining the StorageOS API\n                            credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: |-\n                            volumeName is the human-readable name of the StorageOS volume.  Volume\n                            names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: |-\n                            volumeNamespace specifies the scope of the volume within StorageOS.  If no\n                            namespace is specified then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS for tighter integration.\n                            Set VolumeName to any name to override the default behaviour.\n                            Set to \"default\" if you are not using namespaces within StorageOS.\n                            Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: |-\n                        vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.\n                        Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type\n                        are redirected to the csi.vsphere.vmware.com CSI driver.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: |-\n                  walCompression defines the compression of the write-ahead log (WAL) using Snappy.\n\n                  WAL compression is enabled by default for Prometheus >= 2.20.0\n\n                  Requires Prometheus v2.11.0 and above.\n                type: boolean\n              web:\n                description: web defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: httpConfig defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: headers defines a list of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: |-\n                              contentSecurityPolicy defines the Content-Security-Policy header to HTTP responses.\n                              Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: |-\n                              strictTransportSecurity defines the Strict-Transport-Security header to HTTP responses.\n                              Unset if blank.\n                              Please make sure that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications hosted on the same\n                              domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: |-\n                              xContentTypeOptions defines the X-Content-Type-Options header to HTTP responses.\n                              Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: |-\n                              xFrameOptions defines the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: |-\n                              xXSSProtection defines the X-XSS-Protection header to all responses.\n                              Unset if blank.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: |-\n                          http2 enable HTTP/2 support. Note that HTTP/2 is only supported with TLS.\n                          When TLSConfig is not configured, HTTP/2 will be disabled.\n                          Whenever the value of the field changes, a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: |-\n                      maxConnections defines the maximum number of simultaneous connections\n                      A zero value means that Prometheus doesn't accept any incoming connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: pageTitle defines the prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: tlsConfig defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: |-\n                          cert defines the Secret or ConfigMap containing the TLS certificate for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `certFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: |-\n                          certFile defines the path to the TLS certificate file in the container for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `cert`.\n                        type: string\n                      cipherSuites:\n                        description: |-\n                          cipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\n\n                          If not defined, the Go default cipher suites are used.\n                          Available cipher suites are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: |-\n                          client_ca defines the Secret or ConfigMap containing the CA certificate for client certificate\n                          authentication to the server.\n\n                          It is mutually exclusive with `clientCAFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: |-\n                          clientAuthType defines the server policy for client TLS authentication.\n\n                          For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType\n                        type: string\n                      clientCAFile:\n                        description: |-\n                          clientCAFile defines the path to the CA certificate file for client certificate authentication to\n                          the server.\n\n                          It is mutually exclusive with `client_ca`.\n                        type: string\n                      curvePreferences:\n                        description: |-\n                          curvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference\n                          order.\n\n                          Available curves are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#CurveID\n                        items:\n                          type: string\n                        type: array\n                      keyFile:\n                        description: |-\n                          keyFile defines the path to the TLS private key file in the container for the web server.\n\n                          If defined, either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keySecret`.\n                        type: string\n                      keySecret:\n                        description: |-\n                          keySecret defines the secret containing the TLS private key for the web server.\n\n                          Either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keyFile`.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: maxVersion defines the Maximum TLS version that is acceptable.\n                        type: string\n                      minVersion:\n                        description: minVersion defines the minimum TLS version that is acceptable.\n                        type: string\n                      preferServerCipherSuites:\n                        description: |-\n                          preferServerCipherSuites defines whether the server selects the client's most preferred cipher\n                          suite, or the server's most preferred cipher suite.\n\n                          If true then the server's preference, as expressed in\n                          the order of elements in cipherSuites, is used.\n                        type: boolean\n                    type: object\n                type: object\n            type: object\n            x-kubernetes-validations:\n            - message: replicas cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.replicas))'\n            - message: storage cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.storage))'\n            - message: shards cannot be greater than 1 when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.shards) && self.shards > 1)'\n            - message: persistentVolumeClaimRetentionPolicy cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.persistentVolumeClaimRetentionPolicy))'\n            - message: scrapeConfigSelector cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.scrapeConfigSelector))'\n            - message: probeSelector cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.probeSelector))'\n            - message: scrapeConfigNamespaceSelector cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.scrapeConfigNamespaceSelector))'\n            - message: probeNamespaceSelector cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.probeNamespaceSelector))'\n            - message: serviceMonitorSelector cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.serviceMonitorSelector))'\n            - message: serviceMonitorNamespaceSelector cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.serviceMonitorNamespaceSelector))'\n            - message: additionalScrapeConfigs cannot be set when mode is DaemonSet\n              rule: '!(has(self.mode) && self.mode == ''DaemonSet'' && has(self.additionalScrapeConfigs))'\n          status:\n            description: |-\n              status defines the most recent observed status of the Prometheus cluster. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              availableReplicas:\n                description: |-\n                  availableReplicas defines the total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: conditions defines the current state of the Prometheus deployment.\n                items:\n                  description: |-\n                    Condition represents the state of the resources associated with the\n                    Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: message defines human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: |-\n                        observedGeneration defines the .metadata.generation that the\n                        condition was set based upon. For instance, if `.metadata.generation` is\n                        currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                        condition is out of date with respect to the current state of the\n                        instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: status of the condition.\n                      minLength: 1\n                      type: string\n                    type:\n                      description: type of the condition being reported.\n                      minLength: 1\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: |-\n                  paused defines whether any actions on the underlying managed objects are\n                  being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: |-\n                  replicas defines the total number of non-terminated pods targeted by this Prometheus deployment\n                  (their labels match the selector).\n                format: int32\n                type: integer\n              selector:\n                description: selector used to match the pods targeted by this Prometheus resource.\n                type: string\n              shardStatuses:\n                description: shardStatuses defines the list has one entry per shard. Each entry provides a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: |-\n                        availableReplicas defines the total number of available pods (ready for at least minReadySeconds)\n                        targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: replicas defines the total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: shardID defines the identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: unavailableReplicas defines the Total number of unavailable pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: |-\n                        updatedReplicas defines the total number of non-terminated pods targeted by this shard\n                        that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              shards:\n                description: shards defines the most recently observed number of shards.\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: unavailableReplicas defines the total number of unavailable pods targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: |-\n                  updatedReplicas defines the total number of non-terminated pods targeted by this Prometheus deployment\n                  that have the desired version spec.\n                format: int32\n                type: integer\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      scale:\n        labelSelectorPath: .status.selector\n        specReplicasPath: .spec.shards\n        statusReplicasPath: .status.shards\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0prometheusruleCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: prometheusrules.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusRule\n    listKind: PrometheusRuleList\n    plural: prometheusrules\n    shortNames:\n    - promrule\n    singular: prometheusrule\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `PrometheusRule` custom resource definition (CRD) defines [alerting](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) and [recording](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) rules to be evaluated by `Prometheus` or `ThanosRuler` objects.\n\n          `Prometheus` and `ThanosRuler` objects select `PrometheusRule` objects using label and namespace selectors.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: spec defines the specification of desired alerting rule definitions for Prometheus.\n            properties:\n              groups:\n                description: groups defines the content of Prometheus rule file\n                items:\n                  description: RuleGroup is a list of sequentially evaluated recording and alerting rules.\n                  properties:\n                    interval:\n                      description: interval defines how often rules in the group are evaluated.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    labels:\n                      additionalProperties:\n                        type: string\n                      description: |-\n                        labels define the labels to add or overwrite before storing the result for its rules.\n                        The labels defined at the rule level take precedence.\n\n                        It requires Prometheus >= 3.0.0.\n                        The field is ignored for Thanos Ruler.\n                      type: object\n                    limit:\n                      description: |-\n                        limit defines the number of alerts an alerting rule and series a recording\n                        rule can produce.\n                        Limit is supported starting with Prometheus >= 2.31 and Thanos Ruler >= 0.24.\n                      type: integer\n                    name:\n                      description: name defines the name of the rule group.\n                      minLength: 1\n                      type: string\n                    partial_response_strategy:\n                      description: |-\n                        partial_response_strategy is only used by ThanosRuler and will\n                        be ignored by Prometheus instances.\n                        More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response\n                      pattern: ^(?i)(abort|warn)?$\n                      type: string\n                    query_offset:\n                      description: |-\n                        query_offset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\n\n                        It requires Prometheus >= v2.53.0.\n                        It is not supported for ThanosRuler.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    rules:\n                      description: rules defines the list of alerting and recording rules.\n                      items:\n                        description: |-\n                          Rule describes an alerting or recording rule\n                          See Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules) rule\n                        properties:\n                          alert:\n                            description: |-\n                              alert defines the name of the alert. Must be a valid label value.\n                              Only one of `record` and `alert` must be set.\n                            type: string\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              annotations defines annotations to add to each alert.\n                              Only valid for alerting rules.\n                            type: object\n                          expr:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            description: expr defines the PromQL expression to evaluate.\n                            x-kubernetes-int-or-string: true\n                          for:\n                            description: for defines how alerts are considered firing once they have been returned for this long.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          keep_firing_for:\n                            description: keep_firing_for defines how long an alert will continue firing after the condition that triggered it has cleared.\n                            minLength: 1\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: labels defines labels to add or overwrite.\n                            type: object\n                          record:\n                            description: |-\n                              record defines the name of the time series to output to. Must be a valid metric name.\n                              Only one of `record` and `alert` must be set.\n                            type: string\n                        required:\n                        - expr\n                        type: object\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n            type: object\n          status:\n            description: |-\n              status defines the status subresource. It is under active development and is updated only when the\n              \"StatusForConfigurationResources\" feature gate is enabled.\n\n              Most recent observed status of the PrometheusRule. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              bindings:\n                description: bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\n                items:\n                  description: WorkloadBinding is a link between a configuration resource and a workload resource.\n                  properties:\n                    conditions:\n                      description: conditions defines the current state of the configuration resource when bound to the referenced Workload object.\n                      items:\n                        description: ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\n                        properties:\n                          lastTransitionTime:\n                            description: lastTransitionTime defines the time of the last update to the current status property.\n                            format: date-time\n                            type: string\n                          message:\n                            description: message defines the human-readable message indicating details for the condition's last transition.\n                            type: string\n                          observedGeneration:\n                            description: |-\n                              observedGeneration defines the .metadata.generation that the\n                              condition was set based upon. For instance, if `.metadata.generation` is\n                              currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                              condition is out of date with respect to the current state of the object.\n                            format: int64\n                            type: integer\n                          reason:\n                            description: reason for the condition's last transition.\n                            type: string\n                          status:\n                            description: status of the condition.\n                            minLength: 1\n                            type: string\n                          type:\n                            description: |-\n                              type of the condition being reported.\n                              Currently, only \"Accepted\" is supported.\n                            enum:\n                            - Accepted\n                            minLength: 1\n                            type: string\n                        required:\n                        - lastTransitionTime\n                        - status\n                        - type\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - type\n                      x-kubernetes-list-type: map\n                    group:\n                      description: group defines the group of the referenced resource.\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name defines the name of the referenced object.\n                      minLength: 1\n                      type: string\n                    namespace:\n                      description: namespace defines the namespace of the referenced object.\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\n                      enum:\n                      - prometheuses\n                      - prometheusagents\n                      - thanosrulers\n                      - alertmanagers\n                      type: string\n                  required:\n                  - group\n                  - name\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - group\n                - resource\n                - name\n                - namespace\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0scrapeconfigCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: scrapeconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ScrapeConfig\n    listKind: ScrapeConfigList\n    plural: scrapeconfigs\n    shortNames:\n    - scfg\n    singular: scrapeconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across\n          multiple namespaces into the Prometheus configuration.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: spec defines the specification of ScrapeConfigSpec.\n            properties:\n              authorization:\n                description: authorization defines the header to use on every scrape request.\n                properties:\n                  credentials:\n                    description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: |-\n                      type defines the authentication type. The value is case-insensitive.\n\n                      \"Basic\" is not a supported value.\n\n                      Default: \"Bearer\"\n                    type: string\n                type: object\n              azureSDConfigs:\n                description: azureSDConfigs defines a list of Azure service discovery configurations.\n                items:\n                  description: |-\n                    AzureSDConfig allow retrieving scrape targets from Azure VMs.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#azure_sd_config\n                  properties:\n                    authenticationMethod:\n                      description: |-\n                        authenticationMethod defines the authentication method, either `OAuth` or `ManagedIdentity` or `SDK`.\n                        See https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview\n                        SDK authentication method uses environment variables by default.\n                        See https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\n                      enum:\n                      - OAuth\n                      - ManagedIdentity\n                      - SDK\n                      type: string\n                    authorization:\n                      description: |-\n                        authorization defines the authorization header configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `oAuth2`, or `basicAuth`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines the information to authenticate against the target HTTP endpoint.\n                        More info: https://prometheus.io/docs/operating/configuration/#endpoints\n                        Cannot be set at the same time as `authorization`, or `oAuth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    clientID:\n                      description: clientID defines client ID. Only required with the OAuth authentication method.\n                      minLength: 1\n                      type: string\n                    clientSecret:\n                      description: clientSecret defines client secret. Only required with the OAuth authentication method.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    environment:\n                      description: environment defines the Azure environment.\n                      minLength: 1\n                      type: string\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: |-\n                        port defines the port to scrape metrics from. If using the public IP address, this must\n                        instead be specified in the relabeling rule.\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    resourceGroup:\n                      description: |-\n                        resourceGroup defines resource group name. Limits discovery to this resource group.\n                        Requires  Prometheus v2.35.0 and above\n                      minLength: 1\n                      type: string\n                    subscriptionID:\n                      description: subscriptionID defines subscription ID. Always required.\n                      minLength: 1\n                      type: string\n                    tenantID:\n                      description: tenantID defines tenant ID. Only required with the OAuth authentication method.\n                      minLength: 1\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defies the TLS configuration applying to the target HTTP endpoint.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - subscriptionID\n                  type: object\n                type: array\n              basicAuth:\n                description: basicAuth defines information to use on every scrape request.\n                properties:\n                  password:\n                    description: |-\n                      password defines a key of a Secret containing the password for\n                      authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: |-\n                      username defines a key of a Secret containing the username for\n                      authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              bodySizeLimit:\n                description: |-\n                  bodySizeLimit defines a per-scrape limit on the size of the uncompressed\n                  response body that will be accepted by Prometheus. Targets responding with\n                  a body larger than this many bytes will cause the scrape to fail.\n\n                  It requires Prometheus >= v2.28.0.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              consulSDConfigs:\n                description: consulSDConfigs defines a list of Consul service discovery configurations.\n                items:\n                  description: |-\n                    ConsulSDConfig defines a Consul service discovery configuration\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#consul_sd_config\n                  properties:\n                    allowStale:\n                      description: |-\n                        allowStale Consul results (see https://www.consul.io/api/features/consistency.html). Will reduce load on Consul.\n                        If unset, Prometheus uses its default value.\n                      type: boolean\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Consul Server.\n                        Cannot be set at the same time as `basicAuth`, or `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines the information to authenticate against the Consul Server.\n                        More info: https://prometheus.io/docs/operating/configuration/#endpoints\n                        Cannot be set at the same time as `authorization`, or `oauth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    datacenter:\n                      description: datacenter defines the consul Datacenter name, if not provided it will use the local Consul Agent Datacenter.\n                      minLength: 1\n                      type: string\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    filter:\n                      description: |-\n                        filter defines the filter expression used to filter the catalog results.\n                        See https://www.consul.io/api-docs/catalog#list-services\n                        It requires Prometheus >= 3.0.0.\n                      minLength: 1\n                      type: string\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    namespace:\n                      description: |-\n                        namespace are only supported in Consul Enterprise.\n\n                        It requires Prometheus >= 2.28.0.\n                      minLength: 1\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    nodeMeta:\n                      additionalProperties:\n                        type: string\n                      description: |-\n                        nodeMeta defines the node metadata key/value pairs to filter nodes for a given service.\n                        Starting with Consul 1.14, it is recommended to use `filter` with the `NodeMeta` selector instead.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    oauth2:\n                      description: |-\n                        oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    partition:\n                      description: partition defines the admin Partitions are only supported in Consul Enterprise.\n                      minLength: 1\n                      type: string\n                    pathPrefix:\n                      description: |-\n                        pathPrefix defines the prefix for URIs for when consul is behind an API gateway (reverse proxy).\n\n                        It requires Prometheus >= 2.45.0.\n                      minLength: 1\n                      type: string\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    scheme:\n                      description: scheme defines the HTTP Scheme.\n                      enum:\n                      - http\n                      - https\n                      - HTTP\n                      - HTTPS\n                      type: string\n                    server:\n                      description: server defines the consul server address. A valid string consisting of a hostname or IP followed by an optional port number.\n                      minLength: 1\n                      type: string\n                    services:\n                      description: services defines a list of services for which targets are retrieved. If omitted, all services are scraped.\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: set\n                    tagSeparator:\n                      description: |-\n                        tagSeparator defines the string by which Consul tags are joined into the tag label.\n                        If unset, Prometheus uses its default value.\n                      minLength: 1\n                      type: string\n                    tags:\n                      description: |-\n                        tags defines an optional list of tags used to filter nodes for a given service. Services must contain all tags in the list.\n                        Starting with Consul 1.14, it is recommended to use `filter` with the `ServiceTags` selector instead.\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: set\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Consul API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    tokenRef:\n                      description: tokenRef defines the consul ACL TokenRef, if not provided it will use the ACL from the local Consul Agent.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                  required:\n                  - server\n                  type: object\n                type: array\n              convertClassicHistogramsToNHCB:\n                description: |-\n                  convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\n                  It requires Prometheus >= v3.0.0.\n                type: boolean\n              digitalOceanSDConfigs:\n                description: digitalOceanSDConfigs defines a list of DigitalOcean service discovery configurations.\n                items:\n                  description: |-\n                    DigitalOceanSDConfig allow retrieving scrape targets from DigitalOcean's Droplets API.\n                    This service discovery uses the public IPv4 address by default, by that can be changed with relabeling\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#digitalocean_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the DigitalOcean API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the DigitalOcean API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              dnsSDConfigs:\n                description: dnsSDConfigs defines a list of DNS service discovery configurations.\n                items:\n                  description: |-\n                    DNSSDConfig allows specifying a set of DNS domain names which are periodically queried to discover a list of targets.\n                    The DNS servers to be contacted are read from /etc/resolv.conf.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dns_sd_config\n                  properties:\n                    names:\n                      description: names defines a list of DNS domain names to be queried.\n                      items:\n                        minLength: 1\n                        type: string\n                      minItems: 1\n                      type: array\n                    port:\n                      description: |-\n                        port defines the port to scrape metrics from. If using the public IP address, this must\n                        Ignored for SRV records\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    type:\n                      description: |-\n                        type defines the type of DNS query to perform. One of SRV, A, AAAA, MX or NS.\n                        If not set, Prometheus uses its default value.\n\n                        When set to NS, it requires Prometheus >= v2.49.0.\n                        When set to MX, it requires Prometheus >= v2.38.0\n                      enum:\n                      - A\n                      - AAAA\n                      - MX\n                      - NS\n                      - SRV\n                      type: string\n                  required:\n                  - names\n                  type: object\n                type: array\n              dockerSDConfigs:\n                description: dockerSDConfigs defines a list of Docker service discovery configurations.\n                items:\n                  description: |-\n                    Docker SD configurations allow retrieving scrape targets from Docker Engine hosts.\n                    This SD discovers \"containers\" and will create a target for each network IP and\n                    port the container is configured to expose.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#docker_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Docker daemon.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: basicAuth defines information to use on every scrape request.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    filters:\n                      description: filters defines filters to limit the discovery process to a subset of the available resources.\n                      items:\n                        description: Filter name and value pairs to limit the discovery process to a subset of available resources.\n                        properties:\n                          name:\n                            description: name of the Filter.\n                            minLength: 1\n                            type: string\n                          values:\n                            description: values defines values to filter on.\n                            items:\n                              minLength: 1\n                              type: string\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: set\n                        required:\n                        - name\n                        - values\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    host:\n                      description: host defines the address of the docker daemon.\n                      minLength: 1\n                      pattern: ^[a-zA-Z][a-zA-Z0-9+.-]*://.+$\n                      type: string\n                    hostNetworkingHost:\n                      description: hostNetworkingHost defines the host to use if the container is in host networking mode.\n                      minLength: 1\n                      type: string\n                    matchFirstNetwork:\n                      description: |-\n                        matchFirstNetwork defines whether to match the first network if the container has multiple networks defined.\n                        If unset, Prometheus uses true by default.\n                        It requires Prometheus >= v2.54.1.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Docker daemon.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - host\n                  type: object\n                type: array\n              dockerSwarmSDConfigs:\n                description: dockerSwarmSDConfigs defines a list of Dockerswarm service discovery configurations.\n                items:\n                  description: |-\n                    DockerSwarmSDConfig configurations allow retrieving scrape targets from Docker Swarm engine.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dockerswarm_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Docker Swarm API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: basicAuth defines information to use on every scrape request.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    filters:\n                      description: |-\n                        filters defines the filters to limit the discovery process to a subset of available\n                        resources.\n                        The available filters are listed in the upstream documentation:\n                        Services: https://docs.docker.com/engine/api/v1.40/#operation/ServiceList\n                        Tasks: https://docs.docker.com/engine/api/v1.40/#operation/TaskList\n                        Nodes: https://docs.docker.com/engine/api/v1.40/#operation/NodeList\n                      items:\n                        description: Filter name and value pairs to limit the discovery process to a subset of available resources.\n                        properties:\n                          name:\n                            description: name of the Filter.\n                            minLength: 1\n                            type: string\n                          values:\n                            description: values defines values to filter on.\n                            items:\n                              minLength: 1\n                              type: string\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: set\n                        required:\n                        - name\n                        - values\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    host:\n                      description: host defines the address of the Docker daemon\n                      pattern: ^[a-zA-Z][a-zA-Z0-9+.-]*://.+$\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: |-\n                        port defines the port to scrape metrics from. If using the public IP address, this must\n                        tasks and services that don't have published ports.\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    role:\n                      description: role of the targets to retrieve. Must be `Services`, `Tasks`, or `Nodes`.\n                      enum:\n                      - Services\n                      - Tasks\n                      - Nodes\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Docker Swarm daemon.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - host\n                  - role\n                  type: object\n                type: array\n              ec2SDConfigs:\n                description: ec2SDConfigs defines a list of EC2 service discovery configurations.\n                items:\n                  description: |-\n                    EC2SDConfig allow retrieving scrape targets from AWS EC2 instances.\n                    The private IP address is used by default, but may be changed to the public IP address with relabeling.\n                    The IAM credentials used must have the ec2:DescribeInstances permission to discover scrape targets\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ec2_sd_config\n\n                    The EC2 service discovery requires AWS API keys or role ARN for authentication.\n                    BasicAuth, Authorization and OAuth2 fields are not present on purpose.\n                  properties:\n                    accessKey:\n                      description: accessKey defines the AWS API key.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHTTP2:\n                      description: |-\n                        enableHTTP2 defines whether to enable HTTP2.\n                        It requires Prometheus >= v2.41.0\n                      type: boolean\n                    filters:\n                      description: |-\n                        filters can be used optionally to filter the instance list by other criteria.\n                        Available filter criteria can be found here:\n                        https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html\n                        Filter API documentation: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Filter.html\n                        It requires Prometheus >= v2.3.0\n                      items:\n                        description: Filter name and value pairs to limit the discovery process to a subset of available resources.\n                        properties:\n                          name:\n                            description: name of the Filter.\n                            minLength: 1\n                            type: string\n                          values:\n                            description: values defines values to filter on.\n                            items:\n                              minLength: 1\n                              type: string\n                            minItems: 1\n                            type: array\n                            x-kubernetes-list-type: set\n                        required:\n                        - name\n                        - values\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    followRedirects:\n                      description: |-\n                        followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                        It requires Prometheus >= v2.41.0\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    port:\n                      description: |-\n                        port defines the port to scrape metrics from. If using the public IP address, this must\n                        instead be specified in the relabeling rule.\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    region:\n                      description: region defines the AWS region.\n                      minLength: 1\n                      type: string\n                    roleARN:\n                      description: roleARN defines an alternative to using AWS API keys.\n                      minLength: 1\n                      type: string\n                    secretKey:\n                      description: secretKey defines the AWS API secret.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    tlsConfig:\n                      description: |-\n                        tlsConfig defines the TLS configuration to connect to the EC2 API.\n                        It requires Prometheus >= v2.41.0\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              enableCompression:\n                description: |-\n                  enableCompression when false, Prometheus will request uncompressed response from the scraped target.\n\n                  It requires Prometheus >= v2.49.0.\n\n                  If unset, Prometheus uses true by default.\n                type: boolean\n              enableHTTP2:\n                description: enableHTTP2 defines whether to enable HTTP2.\n                type: boolean\n              eurekaSDConfigs:\n                description: eurekaSDConfigs defines a list of Eureka service discovery configurations.\n                items:\n                  description: |-\n                    Eureka SD configurations allow retrieving scrape targets using the Eureka REST API.\n                    Prometheus will periodically check the REST endpoint and create a target for every app instance.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#eureka_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Eureka server.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: basicAuth defines the BasicAuth information to use on every scrape request.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    server:\n                      description: server defines the URL to connect to the Eureka server.\n                      pattern: ^https?://.+$\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Eureka server.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - server\n                  type: object\n                type: array\n              fallbackScrapeProtocol:\n                description: |-\n                  fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\n\n                  It requires Prometheus >= v3.0.0.\n                enum:\n                - PrometheusProto\n                - OpenMetricsText0.0.1\n                - OpenMetricsText1.0.0\n                - PrometheusText0.0.4\n                - PrometheusText1.0.0\n                type: string\n              fileSDConfigs:\n                description: fileSDConfigs defines a list of file service discovery configurations.\n                items:\n                  description: |-\n                    FileSDConfig defines a Prometheus file service discovery configuration\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\n                  properties:\n                    files:\n                      description: |-\n                        files defines the list of files to be used for file discovery. Recommendation: use absolute paths. While relative paths work, the\n                        prometheus-operator project makes no guarantees about the working directory where the configuration file is\n                        stored.\n                        Files must be mounted using Prometheus.ConfigMaps or Prometheus.Secrets.\n                      items:\n                        description: SDFile represents a file used for service discovery\n                        pattern: ^[^*]*(\\*[^/]*)?\\.(json|yml|yaml|JSON|YML|YAML)$\n                        type: string\n                      minItems: 1\n                      type: array\n                      x-kubernetes-list-type: set\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                  required:\n                  - files\n                  type: object\n                type: array\n              gceSDConfigs:\n                description: gceSDConfigs defines a list of GCE service discovery configurations.\n                items:\n                  description: |-\n                    GCESDConfig configures scrape targets from GCP GCE instances.\n                    The private IP address is used by default, but may be changed to\n                    the public IP address with relabeling.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#gce_sd_config\n\n                    The GCE service discovery will load the Google Cloud credentials\n                    from the file specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable.\n                    See https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform\n\n                    A pre-requisite for using GCESDConfig is that a Secret containing valid\n                    Google Cloud credentials is mounted into the Prometheus or PrometheusAgent\n                    pod via the `.spec.secrets` field and that the GOOGLE_APPLICATION_CREDENTIALS\n                    environment variable is set to /etc/prometheus/secrets/<secret-name>/<credentials-filename.json>.\n                  properties:\n                    filter:\n                      description: |-\n                        filter defines the filter that can be used optionally to filter the instance list by other criteria\n                        Syntax of this filter is described in the filter query parameter section:\n                        https://cloud.google.com/compute/docs/reference/latest/instances/list\n                      minLength: 1\n                      type: string\n                    port:\n                      description: |-\n                        port defines the port to scrape metrics from. If using the public IP address, this must\n                        instead be specified in the relabeling rule.\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    project:\n                      description: project defines the Google Cloud Project ID\n                      minLength: 1\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    tagSeparator:\n                      description: tagSeparator defines the tag separator is used to separate the tags on concatenation\n                      minLength: 1\n                      type: string\n                    zone:\n                      description: zone defines the zone of the scrape targets. If you need multiple zones use multiple GCESDConfigs.\n                      minLength: 1\n                      type: string\n                  required:\n                  - project\n                  - zone\n                  type: object\n                type: array\n              hetznerSDConfigs:\n                description: hetznerSDConfigs defines a list of Hetzner service discovery configurations.\n                items:\n                  description: |-\n                    HetznerSDConfig allow retrieving scrape targets from Hetzner Cloud API and Robot API.\n                    This service discovery uses the public IPv4 address by default, but that can be changed with relabeling\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#hetzner_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Hetzner API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: basicAuth defines information to use on every scrape request.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    labelSelector:\n                      description: |-\n                        labelSelector defines the label selector used to filter the servers when fetching them from the API.\n                        It requires Prometheus >= v3.5.0.\n                      minLength: 1\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    role:\n                      description: role defines the Hetzner role of entities that should be discovered.\n                      enum:\n                      - hcloud\n                      - Hcloud\n                      - robot\n                      - Robot\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Hetzner API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - role\n                  type: object\n                type: array\n              honorLabels:\n                description: |-\n                  honorLabels defines when true the metric's labels when they collide\n                  with the target's labels.\n                type: boolean\n              honorTimestamps:\n                description: |-\n                  honorTimestamps defines whether Prometheus preserves the timestamps\n                  when exposed by the target.\n                type: boolean\n              httpSDConfigs:\n                description: httpSDConfigs defines a list of HTTP service discovery configurations.\n                items:\n                  description: |-\n                    HTTPSDConfig defines a prometheus HTTP service discovery configuration\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the authorization header configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `oAuth2`, or `basicAuth`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines information to use on every scrape request.\n                        More info: https://prometheus.io/docs/operating/configuration/#endpoints\n                        Cannot be set at the same time as `authorization`, or `oAuth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration applying to the target HTTP endpoint.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: url defines the URL from which the targets are fetched.\n                      pattern: ^https?://.+$\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              ionosSDConfigs:\n                description: ionosSDConfigs defines a list of IONOS service discovery configurations.\n                items:\n                  description: |-\n                    IonosSDConfig configurations allow retrieving scrape targets from IONOS resources.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ionos_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the IONOS API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    datacenterID:\n                      description: datacenterID defines the unique ID of the IONOS data center.\n                      minLength: 1\n                      type: string\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the IONOS API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - authorization\n                  - datacenterID\n                  type: object\n                type: array\n              jobName:\n                description: |-\n                  jobName defines the value of the `job` label assigned to the scraped metrics by default.\n\n                  The `job_name` field in the rendered scrape configuration is always controlled by the\n                  operator to prevent duplicate job names, which Prometheus does not allow. Instead the\n                  `job` label is set by means of relabeling configs.\n                minLength: 1\n                type: string\n              keepDroppedTargets:\n                description: |-\n                  keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\n                  that will be kept in memory. 0 means no limit.\n\n                  It requires Prometheus >= v2.47.0.\n                format: int64\n                type: integer\n              kubernetesSDConfigs:\n                description: kubernetesSDConfigs defines a list of Kubernetes service discovery configurations.\n                items:\n                  description: |-\n                    KubernetesSDConfig allows retrieving scrape targets from Kubernetes' REST API.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config\n                  properties:\n                    apiServer:\n                      description: |-\n                        apiServer defines the API server address consisting of a hostname or IP address followed\n                        by an optional port number.\n                        If left empty, Prometheus is assumed to run inside\n                        of the cluster. It will discover API servers automatically and use the pod's\n                        CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\n                      minLength: 1\n                      type: string\n                    attachMetadata:\n                      description: |-\n                        attachMetadata defines the metadata to attach to discovered targets.\n                        It requires Prometheus >= v2.35.0 when using the `Pod` role and\n                        Prometheus >= v2.37.0 for `Endpoints` and `Endpointslice` roles.\n                      properties:\n                        node:\n                          description: |-\n                            node attaches node metadata to discovered targets.\n                            When set to true, Prometheus must have the `get` permission on the\n                            `Nodes` objects.\n                            Only valid for Pod, Endpoint and Endpointslice roles.\n                          type: boolean\n                      type: object\n                    authorization:\n                      description: |-\n                        authorization defines the authorization header to use on every scrape request.\n                        Cannot be set at the same time as `basicAuth`, or `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines information to use on every scrape request.\n                        Cannot be set at the same time as `authorization`, or `oauth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    namespaces:\n                      description: namespaces defines the namespace discovery. If omitted, Prometheus discovers targets across all namespaces.\n                      properties:\n                        names:\n                          description: |-\n                            names defines a list of namespaces where to watch for resources.\n                            If empty and `ownNamespace` isn't true, Prometheus watches for resources in all namespaces.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: set\n                        ownNamespace:\n                          description: ownNamespace includes the namespace in which the Prometheus pod runs to the list of watched namespaces.\n                          type: boolean\n                      type: object\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    role:\n                      description: |-\n                        role defines the Kubernetes role of the entities that should be discovered.\n                        Role `Endpointslice` requires Prometheus >= v2.21.0\n                      enum:\n                      - Pod\n                      - Endpoints\n                      - Ingress\n                      - Service\n                      - Node\n                      - EndpointSlice\n                      type: string\n                    selectors:\n                      description: |-\n                        selectors defines the selector to select objects.\n                        It requires Prometheus >= v2.17.0\n                      items:\n                        description: K8SSelectorConfig is Kubernetes Selector Config\n                        properties:\n                          field:\n                            description: |-\n                              field defines an optional field selector to limit the service discovery to resources which have fields with specific values.\n                              e.g: `metadata.name=foobar`\n                            minLength: 1\n                            type: string\n                          label:\n                            description: |-\n                              label defines an optional label selector to limit the service discovery to resources with specific labels and label values.\n                              e.g: `node.kubernetes.io/instance-type=master`\n                            minLength: 1\n                            type: string\n                          role:\n                            description: |-\n                              role defines the type of Kubernetes resource to limit the service discovery to.\n                              Accepted values are: Node, Pod, Endpoints, EndpointSlice, Service, Ingress.\n                            enum:\n                            - Pod\n                            - Endpoints\n                            - Ingress\n                            - Service\n                            - Node\n                            - EndpointSlice\n                            type: string\n                        required:\n                        - role\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - role\n                      x-kubernetes-list-type: map\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Kubernetes API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - role\n                  type: object\n                type: array\n              kumaSDConfigs:\n                description: kumaSDConfigs defines a list of Kuma service discovery configurations.\n                items:\n                  description: |-\n                    KumaSDConfig allow retrieving scrape targets from Kuma's control plane.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kuma_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Kuma control plane.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: basicAuth defines information to use on every scrape request.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    clientID:\n                      description: |-\n                        clientID is used by Kuma Control Plane to compute Monitoring Assignment for specific Prometheus backend.\n                        It requires Prometheus >= v2.50.0.\n                      minLength: 1\n                      type: string\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    fetchTimeout:\n                      description: fetchTimeout defines the time after which the monitoring assignments are refreshed.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    server:\n                      description: server defines the address of the Kuma Control Plane's MADS xDS server.\n                      pattern: ^https?://.+$\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Kuma control plane.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - server\n                  type: object\n                type: array\n              labelLimit:\n                description: |-\n                  labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: |-\n                  labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: |-\n                  labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\n                  Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              lightSailSDConfigs:\n                description: lightSailSDConfigs defines a list of Lightsail service discovery configurations.\n                items:\n                  description: |-\n                    LightSailSDConfig configurations allow retrieving scrape targets from AWS Lightsail instances.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#lightsail_sd_config\n                  properties:\n                    accessKey:\n                      description: accessKey defines the AWS API key.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Lightsail API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines information to use on every scrape request.\n                        Cannot be set at the same time as `authorization`, or `oauth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    endpoint:\n                      description: endpoint defines the custom endpoint to be used.\n                      minLength: 1\n                      type: string\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    region:\n                      description: region defines the AWS region.\n                      minLength: 1\n                      type: string\n                    roleARN:\n                      description: roleARN defines the AWS Role ARN, an alternative to using AWS API keys.\n                      type: string\n                    secretKey:\n                      description: secretKey defines the AWS API secret.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Lightsail API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              linodeSDConfigs:\n                description: linodeSDConfigs defines a list of Linode service discovery configurations.\n                items:\n                  description: |-\n                    LinodeSDConfig configurations allow retrieving scrape targets from Linode's Linode APIv4.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#linode_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Linode API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    region:\n                      description: region defines the region to filter on.\n                      minLength: 1\n                      type: string\n                    tagSeparator:\n                      description: tagSeparator defines the string by which Linode Instance tags are joined into the tag label.el.\n                      minLength: 1\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Linode API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              metricRelabelings:\n                description: metricRelabelings defines the metricRelabelings to apply to samples before ingestion.\n                items:\n                  description: |-\n                    RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                    scraped samples and remote write samples.\n\n                    More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                  properties:\n                    action:\n                      default: replace\n                      description: |-\n                        action to perform based on the regex matching.\n\n                        `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                        `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                        Default: \"Replace\"\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: |-\n                        modulus to take of the hash of the source label values.\n\n                        Only applicable when the action is `HashMod`.\n                      format: int64\n                      type: integer\n                    regex:\n                      description: regex defines the regular expression against which the extracted value is matched.\n                      type: string\n                    replacement:\n                      description: |-\n                        replacement value against which a Replace action is performed if the\n                        regular expression matches.\n\n                        Regex capture groups are available.\n                      type: string\n                    separator:\n                      description: separator defines the string between concatenated SourceLabels.\n                      type: string\n                    sourceLabels:\n                      description: |-\n                        sourceLabels defines the source labels select values from existing labels. Their content is\n                        concatenated using the configured Separator and matched against the\n                        configured regular expression.\n                      items:\n                        description: |-\n                          LabelName is a valid Prometheus label name.\n                          For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                          For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: |-\n                        targetLabel defines the label to which the resulting string is written in a replacement.\n\n                        It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                        `KeepEqual` and `DropEqual` actions.\n\n                        Regex capture groups are available.\n                      type: string\n                  type: object\n                minItems: 1\n                type: array\n              metricsPath:\n                description: metricsPath defines the HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).\n                minLength: 1\n                type: string\n              nameEscapingScheme:\n                description: |-\n                  nameEscapingScheme defines the metric name escaping mode to request through content negotiation.\n\n                  It requires Prometheus >= v3.4.0.\n                enum:\n                - AllowUTF8\n                - Underscores\n                - Dots\n                - Values\n                type: string\n              nameValidationScheme:\n                description: |-\n                  nameValidationScheme defines the validation scheme for metric and label names.\n\n                  It requires Prometheus >= v3.0.0.\n                enum:\n                - UTF8\n                - Legacy\n                type: string\n              nativeHistogramBucketLimit:\n                description: |-\n                  nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\n                  buckets will be merged to stay within the limit.\n                  It requires Prometheus >= v2.45.0.\n                format: int64\n                type: integer\n              nativeHistogramMinBucketFactor:\n                anyOf:\n                - type: integer\n                - type: string\n                description: |-\n                  nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\n                  buckets will be merged to increase the factor sufficiently.\n                  It requires Prometheus >= v2.50.0.\n                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                x-kubernetes-int-or-string: true\n              noProxy:\n                description: |-\n                  noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                  that should be excluded from proxying. IP and domain names can\n                  contain port numbers.\n\n                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                type: string\n              nomadSDConfigs:\n                description: nomadSDConfigs defines a list of Nomad service discovery configurations.\n                items:\n                  description: |-\n                    NomadSDConfig configurations allow retrieving scrape targets from Nomad's Service API.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#nomad_sd_config\n                  properties:\n                    allowStale:\n                      description: |-\n                        allowStale defines the information to access the Nomad API. It is to be defined\n                        as the Nomad documentation requires.\n                      type: boolean\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the Nomad API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: basicAuth defines information to use on every scrape request.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    namespace:\n                      description: |-\n                        namespace defines the Nomad namespace to query for service discovery.\n                        When specified, only resources within this namespace will be discovered.\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: oauth2 defines the configuration to use on every scrape request.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    region:\n                      description: |-\n                        region defines the Nomad region to query for service discovery.\n                        When specified, only resources within this region will be discovered.\n                      type: string\n                    server:\n                      description: |-\n                        server defines the Nomad server address to connect to for service discovery.\n                        This should be the full URL including protocol (e.g., \"https://nomad.example.com:4646\").\n                      pattern: ^https?://.+$\n                      type: string\n                    tagSeparator:\n                      description: |-\n                        tagSeparator defines the separator used to join multiple tags.\n                        This determines how Nomad service tags are concatenated into Prometheus labels.\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Nomad API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  required:\n                  - server\n                  type: object\n                type: array\n              oauth2:\n                description: oauth2 defines the configuration to use on every scrape request.\n                properties:\n                  clientId:\n                    description: |-\n                      clientId defines a key of a Secret or ConfigMap containing the\n                      OAuth2 client's ID.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  clientSecret:\n                    description: |-\n                      clientSecret defines a key of a Secret containing the OAuth2\n                      client's secret.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  endpointParams:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      endpointParams configures the HTTP parameters to append to the token\n                      URL.\n                    type: object\n                  noProxy:\n                    description: |-\n                      noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                      that should be excluded from proxying. IP and domain names can\n                      contain port numbers.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: string\n                  proxyConnectHeader:\n                    additionalProperties:\n                      items:\n                        description: SecretKeySelector selects a key of a Secret.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      type: array\n                    description: |-\n                      proxyConnectHeader optionally specifies headers to send to\n                      proxies during CONNECT requests.\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  proxyFromEnvironment:\n                    description: |-\n                      proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                      It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                    type: boolean\n                  proxyUrl:\n                    description: proxyUrl defines the HTTP proxy server to use.\n                    pattern: ^(http|https|socks5)://.+$\n                    type: string\n                  scopes:\n                    description: scopes defines the OAuth2 scopes used for the token request.\n                    items:\n                      type: string\n                    type: array\n                  tlsConfig:\n                    description: |-\n                      tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                      It requires Prometheus >= v2.43.0.\n                    properties:\n                      ca:\n                        description: ca defines the Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cert:\n                        description: cert defines the Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      insecureSkipVerify:\n                        description: insecureSkipVerify defines how to disable target certificate validation.\n                        type: boolean\n                      keySecret:\n                        description: keySecret defines the Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: |-\n                          maxVersion defines the maximum acceptable TLS version.\n\n                          It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      minVersion:\n                        description: |-\n                          minVersion defines the minimum acceptable TLS version.\n\n                          It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                        enum:\n                        - TLS10\n                        - TLS11\n                        - TLS12\n                        - TLS13\n                        type: string\n                      serverName:\n                        description: serverName is used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                  tokenUrl:\n                    description: tokenUrl defines the URL to fetch the token from.\n                    minLength: 1\n                    type: string\n                required:\n                - clientId\n                - clientSecret\n                - tokenUrl\n                type: object\n              openstackSDConfigs:\n                description: openstackSDConfigs defines a list of OpenStack service discovery configurations.\n                items:\n                  description: |-\n                    OpenStackSDConfig allow retrieving scrape targets from OpenStack Nova instances.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#openstack_sd_config\n                  properties:\n                    allTenants:\n                      description: |-\n                        allTenants defines whether the service discovery should list all instances for all projects.\n                        It is only relevant for the 'instance' role and usually requires admin permissions.\n                      type: boolean\n                    applicationCredentialId:\n                      description: applicationCredentialId defines the OpenStack applicationCredentialId.\n                      type: string\n                    applicationCredentialName:\n                      description: |-\n                        applicationCredentialName defines the ApplicationCredentialID or ApplicationCredentialName fields are\n                        required if using an application credential to authenticate. Some providers\n                        allow you to create an application credential to authenticate rather than a\n                        password.\n                      minLength: 1\n                      type: string\n                    applicationCredentialSecret:\n                      description: |-\n                        applicationCredentialSecret defines the required field if using an application\n                        credential to authenticate.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    availability:\n                      description: availability defines the availability of the endpoint to connect to.\n                      enum:\n                      - Public\n                      - public\n                      - Admin\n                      - admin\n                      - Internal\n                      - internal\n                      type: string\n                    domainID:\n                      description: domainID defines The OpenStack domainID.\n                      minLength: 1\n                      type: string\n                    domainName:\n                      description: |-\n                        domainName defines at most one of domainId and domainName that must be provided if using username\n                        with Identity V3. Otherwise, either are optional.\n                      minLength: 1\n                      type: string\n                    identityEndpoint:\n                      description: |-\n                        identityEndpoint defines the HTTP endpoint that is required to work with\n                        the Identity API of the appropriate version.\n                      pattern: ^https?://.+$\n                      type: string\n                    password:\n                      description: |-\n                        password defines the password for the Identity V2 and V3 APIs. Consult with your provider's\n                        control panel to discover your account's preferred method of authentication.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    port:\n                      description: |-\n                        port defines the port to scrape metrics from. If using the public IP address, this must\n                        instead be specified in the relabeling rule.\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    projectID:\n                      description: projectID defines the OpenStack projectID.\n                      minLength: 1\n                      type: string\n                    projectName:\n                      description: |-\n                        projectName defines an optional field for the Identity V2 API.\n                        Some providers allow you to specify a ProjectName instead of the ProjectId.\n                        Some require both. Your provider's authentication policies will determine\n                        how these fields influence authentication.\n                      minLength: 1\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    region:\n                      description: region defines the OpenStack Region.\n                      minLength: 1\n                      type: string\n                    role:\n                      description: |-\n                        role defines the OpenStack role of entities that should be discovered.\n\n                        Note: The `LoadBalancer` role requires Prometheus >= v3.2.0.\n                      enum:\n                      - Instance\n                      - Hypervisor\n                      - LoadBalancer\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration applying to the target HTTP endpoint.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    userid:\n                      description: userid defines the OpenStack userid.\n                      minLength: 1\n                      type: string\n                    username:\n                      description: |-\n                        username defines the username required if using Identity V2 API. Consult with your provider's\n                        control panel to discover your account's username.\n                        In Identity V3, either userid or a combination of username\n                        and domainId or domainName are needed\n                      minLength: 1\n                      type: string\n                  required:\n                  - region\n                  - role\n                  type: object\n                type: array\n              ovhcloudSDConfigs:\n                description: ovhcloudSDConfigs defines a list of OVHcloud service discovery configurations.\n                items:\n                  description: |-\n                    OVHCloudSDConfig configurations allow retrieving scrape targets from OVHcloud's dedicated servers and VPS using their API.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#ovhcloud_sd_config\n                  properties:\n                    applicationKey:\n                      description: |-\n                        applicationKey defines the access key to use for OVHCloud API authentication.\n                        This is obtained from the OVHCloud API credentials at https://api.ovh.com.\n                      minLength: 1\n                      type: string\n                    applicationSecret:\n                      description: |-\n                        applicationSecret defines the secret key for OVHCloud API authentication.\n                        This contains the application secret obtained during OVHCloud API credential creation.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    consumerKey:\n                      description: |-\n                        consumerKey defines the consumer key for OVHCloud API authentication.\n                        This is the third component of OVHCloud's three-key authentication system.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    endpoint:\n                      description: |-\n                        endpoint defines a custom API endpoint to be used.\n                        When not specified, defaults to the standard OVHCloud API endpoint for the region.\n                      minLength: 1\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    service:\n                      description: |-\n                        service defines the service type of the targets to retrieve.\n                        Must be either `VPS` or `DedicatedServer` to specify which OVHCloud resources to discover.\n                      enum:\n                      - VPS\n                      - DedicatedServer\n                      type: string\n                  required:\n                  - applicationKey\n                  - applicationSecret\n                  - consumerKey\n                  - service\n                  type: object\n                type: array\n              params:\n                additionalProperties:\n                  items:\n                    type: string\n                  type: array\n                description: params defines optional HTTP URL parameters\n                type: object\n                x-kubernetes-map-type: atomic\n              proxyConnectHeader:\n                additionalProperties:\n                  items:\n                    description: SecretKeySelector selects a key of a Secret.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type: array\n                description: |-\n                  proxyConnectHeader optionally specifies headers to send to\n                  proxies during CONNECT requests.\n\n                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                type: object\n                x-kubernetes-map-type: atomic\n              proxyFromEnvironment:\n                description: |-\n                  proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                  It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                type: boolean\n              proxyUrl:\n                description: proxyUrl defines the HTTP proxy server to use.\n                pattern: ^(http|https|socks5)://.+$\n                type: string\n              puppetDBSDConfigs:\n                description: puppetDBSDConfigs defines a list of PuppetDB service discovery configurations.\n                items:\n                  description: |-\n                    PuppetDBSDConfig configurations allow retrieving scrape targets from PuppetDB resources.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#puppetdb_sd_config\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization defines the header configuration to authenticate against the PuppetDB API.\n                        Cannot be set at the same time as `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines information to use on every scrape request.\n                        Cannot be set at the same time as `authorization`, or `oauth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    includeParameters:\n                      description: |-\n                        includeParameters defines whether to include the parameters as meta labels.\n                        Note: Enabling this exposes parameters in the Prometheus UI and API. Make sure\n                        that you don't have secrets exposed as parameters if you enable this.\n                      type: boolean\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the optional OAuth 2.0 configuration to authenticate against the target HTTP endpoint.\n                        Cannot be set at the same time as `authorization`, or `basicAuth`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    query:\n                      description: |-\n                        query defines the Puppet Query Language (PQL) query. Only resources are supported.\n                        https://puppet.com/docs/puppetdb/latest/api/query/v4/pql.html\n                      minLength: 1\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the PuppetDB server.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: url defines the URL of the PuppetDB root query endpoint.\n                      pattern: ^https?://.+$\n                      type: string\n                  required:\n                  - query\n                  - url\n                  type: object\n                type: array\n              relabelings:\n                description: |-\n                  relabelings defines how to rewrite the target's labels before scraping.\n                  Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields.\n                  The original scrape job's name is available via the `__tmp_prometheus_job_name` label.\n                  More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                items:\n                  description: |-\n                    RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                    scraped samples and remote write samples.\n\n                    More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                  properties:\n                    action:\n                      default: replace\n                      description: |-\n                        action to perform based on the regex matching.\n\n                        `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                        `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                        Default: \"Replace\"\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: |-\n                        modulus to take of the hash of the source label values.\n\n                        Only applicable when the action is `HashMod`.\n                      format: int64\n                      type: integer\n                    regex:\n                      description: regex defines the regular expression against which the extracted value is matched.\n                      type: string\n                    replacement:\n                      description: |-\n                        replacement value against which a Replace action is performed if the\n                        regular expression matches.\n\n                        Regex capture groups are available.\n                      type: string\n                    separator:\n                      description: separator defines the string between concatenated SourceLabels.\n                      type: string\n                    sourceLabels:\n                      description: |-\n                        sourceLabels defines the source labels select values from existing labels. Their content is\n                        concatenated using the configured Separator and matched against the\n                        configured regular expression.\n                      items:\n                        description: |-\n                          LabelName is a valid Prometheus label name.\n                          For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                          For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: |-\n                        targetLabel defines the label to which the resulting string is written in a replacement.\n\n                        It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                        `KeepEqual` and `DropEqual` actions.\n\n                        Regex capture groups are available.\n                      type: string\n                  type: object\n                minItems: 1\n                type: array\n              sampleLimit:\n                description: sampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n                format: int64\n                type: integer\n              scalewaySDConfigs:\n                description: scalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.\n                items:\n                  description: |-\n                    ScalewaySDConfig configurations allow retrieving scrape targets from Scaleway instances and baremetal services.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config\n                  properties:\n                    accessKey:\n                      description: accessKey defines the access key to use. https://console.scaleway.com/project/credentials\n                      minLength: 1\n                      type: string\n                    apiURL:\n                      description: apiURL defines the API URL to use when doing the server listing requests.\n                      pattern: ^https?://.+$\n                      type: string\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n                      type: boolean\n                    nameFilter:\n                      description: nameFilter defines a name filter (works as a LIKE) to apply on the server listing request.\n                      minLength: 1\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    port:\n                      description: port defines the port to scrape metrics from. If using the public IP address, this must\n                      format: int32\n                      maximum: 65535\n                      minimum: 0\n                      type: integer\n                    projectID:\n                      description: projectID defines the Project ID of the targets.\n                      minLength: 1\n                      type: string\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    refreshInterval:\n                      description: |-\n                        refreshInterval defines the time after which the provided names are refreshed.\n                        If not set, Prometheus uses its default value.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    role:\n                      description: role defines the service of the targets to retrieve. Must be `Instance` or `Baremetal`.\n                      enum:\n                      - Instance\n                      - Baremetal\n                      type: string\n                    secretKey:\n                      description: secretKey defines the secret key to use when listing targets.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    tagsFilter:\n                      description: tagsFilter defines a tag filter (a server needs to have all defined tags to be listed) to apply on the server listing request.\n                      items:\n                        minLength: 1\n                        type: string\n                      minItems: 1\n                      type: array\n                      x-kubernetes-list-type: set\n                    tlsConfig:\n                      description: tlsConfig defines the TLS configuration to connect to the Scaleway API.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    zone:\n                      description: zone defines the availability zone of your targets (e.g. fr-par-1).\n                      minLength: 1\n                      type: string\n                  required:\n                  - accessKey\n                  - projectID\n                  - role\n                  - secretKey\n                  type: object\n                type: array\n              scheme:\n                description: scheme defines the protocol scheme used for requests.\n                enum:\n                - http\n                - https\n                - HTTP\n                - HTTPS\n                type: string\n              scrapeClass:\n                description: scrapeClass defines the scrape class to apply.\n                minLength: 1\n                type: string\n              scrapeClassicHistograms:\n                description: |-\n                  scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\n                  It requires Prometheus >= v2.45.0.\n\n                  Notice: `scrapeClassicHistograms` corresponds to the `always_scrape_classic_histograms` field in the Prometheus configuration.\n                type: boolean\n              scrapeInterval:\n                description: scrapeInterval defines the interval between consecutive scrapes.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeNativeHistograms:\n                description: |-\n                  scrapeNativeHistograms defines whether to enable scraping of native histograms.\n                  It requires Prometheus >= v3.8.0.\n                type: boolean\n              scrapeProtocols:\n                description: |-\n                  scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\n                  protocols supported by Prometheus in order of preference (from most to least preferred).\n\n                  If unset, Prometheus uses its default value.\n\n                  It requires Prometheus >= v2.49.0.\n                items:\n                  description: |-\n                    ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\n                    Supported values are:\n                    * `OpenMetricsText0.0.1`\n                    * `OpenMetricsText1.0.0`\n                    * `PrometheusProto`\n                    * `PrometheusText0.0.4`\n                    * `PrometheusText1.0.0`\n                  enum:\n                  - PrometheusProto\n                  - OpenMetricsText0.0.1\n                  - OpenMetricsText1.0.0\n                  - PrometheusText0.0.4\n                  - PrometheusText1.0.0\n                  type: string\n                minItems: 1\n                type: array\n                x-kubernetes-list-type: set\n              scrapeTimeout:\n                description: |-\n                  scrapeTimeout defines the number of seconds to wait until a scrape request times out.\n                  The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              staticConfigs:\n                description: staticConfigs defines a list of static targets with a common label set.\n                items:\n                  description: |-\n                    StaticConfig defines a Prometheus static configuration.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\n                  properties:\n                    labels:\n                      additionalProperties:\n                        type: string\n                      description: labels defines labels assigned to all metrics scraped from the targets.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    targets:\n                      description: targets defines the list of targets for this static configuration.\n                      items:\n                        description: Target represents a target for Prometheus to scrape\n                        minLength: 1\n                        type: string\n                      minItems: 1\n                      type: array\n                      x-kubernetes-list-type: set\n                  required:\n                  - targets\n                  type: object\n                type: array\n              targetLimit:\n                description: targetLimit defines a limit on the number of scraped targets that will be accepted.\n                format: int64\n                type: integer\n              tlsConfig:\n                description: tlsConfig defines the TLS configuration to use on every scrape request\n                properties:\n                  ca:\n                    description: ca defines the Certificate authority used when verifying server certificates.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  cert:\n                    description: cert defines the Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  insecureSkipVerify:\n                    description: insecureSkipVerify defines how to disable target certificate validation.\n                    type: boolean\n                  keySecret:\n                    description: keySecret defines the Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  maxVersion:\n                    description: |-\n                      maxVersion defines the maximum acceptable TLS version.\n\n                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                    enum:\n                    - TLS10\n                    - TLS11\n                    - TLS12\n                    - TLS13\n                    type: string\n                  minVersion:\n                    description: |-\n                      minVersion defines the minimum acceptable TLS version.\n\n                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                    enum:\n                    - TLS10\n                    - TLS11\n                    - TLS12\n                    - TLS13\n                    type: string\n                  serverName:\n                    description: serverName is used to verify the hostname for the targets.\n                    type: string\n                type: object\n              trackTimestampsStaleness:\n                description: |-\n                  trackTimestampsStaleness defines whether Prometheus tracks staleness of\n                  the metrics that have an explicit timestamp present in scraped data.\n                  Has no effect if `honorTimestamps` is false.\n                  It requires Prometheus >= v2.48.0.\n                type: boolean\n            type: object\n          status:\n            description: |-\n              status defines the status subresource. It is under active development and is updated only when the\n              \"StatusForConfigurationResources\" feature gate is enabled.\n\n              Most recent observed status of the ScrapeConfig. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              bindings:\n                description: bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\n                items:\n                  description: WorkloadBinding is a link between a configuration resource and a workload resource.\n                  properties:\n                    conditions:\n                      description: conditions defines the current state of the configuration resource when bound to the referenced Workload object.\n                      items:\n                        description: ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\n                        properties:\n                          lastTransitionTime:\n                            description: lastTransitionTime defines the time of the last update to the current status property.\n                            format: date-time\n                            type: string\n                          message:\n                            description: message defines the human-readable message indicating details for the condition's last transition.\n                            type: string\n                          observedGeneration:\n                            description: |-\n                              observedGeneration defines the .metadata.generation that the\n                              condition was set based upon. For instance, if `.metadata.generation` is\n                              currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                              condition is out of date with respect to the current state of the object.\n                            format: int64\n                            type: integer\n                          reason:\n                            description: reason for the condition's last transition.\n                            type: string\n                          status:\n                            description: status of the condition.\n                            minLength: 1\n                            type: string\n                          type:\n                            description: |-\n                              type of the condition being reported.\n                              Currently, only \"Accepted\" is supported.\n                            enum:\n                            - Accepted\n                            minLength: 1\n                            type: string\n                        required:\n                        - lastTransitionTime\n                        - status\n                        - type\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - type\n                      x-kubernetes-list-type: map\n                    group:\n                      description: group defines the group of the referenced resource.\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name defines the name of the referenced object.\n                      minLength: 1\n                      type: string\n                    namespace:\n                      description: namespace defines the namespace of the referenced object.\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\n                      enum:\n                      - prometheuses\n                      - prometheusagents\n                      - thanosrulers\n                      - alertmanagers\n                      type: string\n                  required:\n                  - group\n                  - name\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - group\n                - resource\n                - name\n                - namespace\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0servicemonitorCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: servicemonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ServiceMonitor\n    listKind: ServiceMonitorList\n    plural: servicemonitors\n    shortNames:\n    - smon\n    singular: servicemonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `ServiceMonitor` custom resource definition (CRD) defines how `Prometheus` and `PrometheusAgent` can scrape metrics from a group of services.\n          Among other things, it allows to specify:\n          * The services to scrape via label selectors.\n          * The container ports to scrape.\n          * Authentication credentials to use.\n          * Target and metric relabeling.\n\n          `Prometheus` and `PrometheusAgent` objects select `ServiceMonitor` objects using label and namespace selectors.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: |-\n              spec defines the specification of desired Service selection for target discovery by\n              Prometheus.\n            properties:\n              attachMetadata:\n                description: |-\n                  attachMetadata defines additional metadata which is added to the\n                  discovered targets.\n\n                  It requires Prometheus >= v2.37.0.\n                properties:\n                  node:\n                    description: |-\n                      node when set to true, Prometheus attaches node metadata to the discovered\n                      targets.\n\n                      The Prometheus service account must have the `list` and `watch`\n                      permissions on the `Nodes` objects.\n                    type: boolean\n                type: object\n              bodySizeLimit:\n                description: |-\n                  bodySizeLimit when defined, bodySizeLimit specifies a job level limit on the size\n                  of uncompressed response body that will be accepted by Prometheus.\n\n                  It requires Prometheus >= v2.28.0.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              convertClassicHistogramsToNHCB:\n                description: |-\n                  convertClassicHistogramsToNHCB defines whether to convert all scraped classic histograms into a native histogram with custom buckets.\n                  It requires Prometheus >= v3.0.0.\n                type: boolean\n              endpoints:\n                description: |-\n                  endpoints defines the list of endpoints part of this ServiceMonitor.\n                  Defines how to scrape metrics from Kubernetes [Endpoints](https://kubernetes.io/docs/concepts/services-networking/service/#endpoints) objects.\n                  In most cases, an Endpoints object is backed by a Kubernetes [Service](https://kubernetes.io/docs/concepts/services-networking/service/) object with the same name and labels.\n                items:\n                  description: |-\n                    Endpoint defines an endpoint serving Prometheus metrics to be scraped by\n                    Prometheus.\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization configures the Authorization header credentials used by\n                        the client.\n\n                        Cannot be set at the same time as `basicAuth`, `bearerTokenSecret` or `oauth2`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth defines the Basic Authentication credentials used by the\n                        client.\n\n                        Cannot be set at the same time as `authorization`, `bearerTokenSecret` or `oauth2`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenFile:\n                      description: |-\n                        bearerTokenFile defines the file to read bearer token for scraping the target.\n\n                        Deprecated: use `authorization` instead.\n                      type: string\n                    bearerTokenSecret:\n                      description: |-\n                        bearerTokenSecret defines a key of a Secret containing the bearer token\n                        used by the client for authentication. The secret needs to be in the\n                        same namespace as the custom resource and readable by the Prometheus\n                        Operator.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth` or `oauth2`.\n\n                        Deprecated: use `authorization` instead.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: enableHttp2 can be used to disable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: |-\n                        filterRunning when true, the pods which are not running (e.g. either in Failed or\n                        Succeeded state) are dropped during the target discovery.\n\n                        If unset, the filtering is enabled.\n\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\n                      type: boolean\n                    followRedirects:\n                      description: |-\n                        followRedirects defines whether the client should follow HTTP 3xx\n                        redirects.\n                      type: boolean\n                    honorLabels:\n                      description: |-\n                        honorLabels defines when true the metric's labels when they collide\n                        with the target's labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: |-\n                        honorTimestamps defines whether Prometheus preserves the timestamps\n                        when exposed by the target.\n                      type: boolean\n                    interval:\n                      description: |-\n                        interval at which Prometheus scrapes the metrics from the target.\n\n                        If empty, Prometheus uses the global scrape interval.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: |-\n                        metricRelabelings defines the relabeling rules to apply to the\n                        samples before ingestion.\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 defines the OAuth2 settings used by the client.\n\n                        It requires Prometheus >= 2.27.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth` or `bearerTokenSecret`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: params define optional HTTP URL parameters.\n                      type: object\n                    path:\n                      description: |-\n                        path defines the HTTP path from which to scrape for metrics.\n\n                        If empty, Prometheus uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: |-\n                        port defines the name of the Service port which this endpoint refers to.\n\n                        It takes precedence over `targetPort`.\n                      type: string\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    relabelings:\n                      description: |-\n                        relabelings defines the relabeling rules to apply the target's\n                        metadata labels.\n\n                        The Operator automatically adds relabelings for a few standard Kubernetes fields.\n\n                        The original scrape job's name is available via the `__tmp_prometheus_job_name` label.\n\n                        More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: scheme defines the HTTP scheme to use when scraping the metrics.\n                      enum:\n                      - http\n                      - https\n                      - HTTP\n                      - HTTPS\n                      type: string\n                    scrapeTimeout:\n                      description: |-\n                        scrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.\n\n                        If empty, Prometheus uses the global scrape timeout unless it is less\n                        than the target's scrape interval value in which the latter is used.\n                        The value cannot be greater than the scrape interval otherwise the operator will reject the resource.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: |-\n                        targetPort defines the name or number of the target port of the `Pod` object behind the\n                        Service. The port must be specified with the container's port property.\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: tlsConfig defines TLS configuration used by the client.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    trackTimestampsStaleness:\n                      description: |-\n                        trackTimestampsStaleness defines whether Prometheus tracks staleness of\n                        the metrics that have an explicit timestamp present in scraped data.\n                        Has no effect if `honorTimestamps` is false.\n\n                        It requires Prometheus >= v2.48.0.\n                      type: boolean\n                  type: object\n                type: array\n              fallbackScrapeProtocol:\n                description: |-\n                  fallbackScrapeProtocol defines the protocol to use if a scrape returns blank, unparseable, or otherwise invalid Content-Type.\n\n                  It requires Prometheus >= v3.0.0.\n                enum:\n                - PrometheusProto\n                - OpenMetricsText0.0.1\n                - OpenMetricsText1.0.0\n                - PrometheusText0.0.4\n                - PrometheusText1.0.0\n                type: string\n              jobLabel:\n                description: |-\n                  jobLabel selects the label from the associated Kubernetes `Service`\n                  object which will be used as the `job` label for all metrics.\n\n                  For example if `jobLabel` is set to `foo` and the Kubernetes `Service`\n                  object is labeled with `foo: bar`, then Prometheus adds the `job=\"bar\"`\n                  label to all ingested metrics.\n\n                  If the value of this field is empty or if the label doesn't exist for\n                  the given Service, the `job` label of the metrics defaults to the name\n                  of the associated Kubernetes `Service`.\n                type: string\n              keepDroppedTargets:\n                description: |-\n                  keepDroppedTargets defines the per-scrape limit on the number of targets dropped by relabeling\n                  that will be kept in memory. 0 means no limit.\n\n                  It requires Prometheus >= v2.47.0.\n                format: int64\n                type: integer\n              labelLimit:\n                description: |-\n                  labelLimit defines the per-scrape limit on number of labels that will be accepted for a sample.\n\n                  It requires Prometheus >= v2.27.0.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: |-\n                  labelNameLengthLimit defines the per-scrape limit on length of labels name that will be accepted for a sample.\n\n                  It requires Prometheus >= v2.27.0.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: |-\n                  labelValueLengthLimit defines the per-scrape limit on length of labels value that will be accepted for a sample.\n\n                  It requires Prometheus >= v2.27.0.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: |-\n                  namespaceSelector defines in which namespace(s) Prometheus should discover the services.\n                  By default, the services are discovered in the same namespace as the `ServiceMonitor` object but it is possible to select pods across different/all namespaces.\n                properties:\n                  any:\n                    description: |-\n                      any defines the boolean describing whether all namespaces are selected in contrast to a\n                      list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: matchNames defines the list of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              nativeHistogramBucketLimit:\n                description: |-\n                  nativeHistogramBucketLimit defines ff there are more than this many buckets in a native histogram,\n                  buckets will be merged to stay within the limit.\n                  It requires Prometheus >= v2.45.0.\n                format: int64\n                type: integer\n              nativeHistogramMinBucketFactor:\n                anyOf:\n                - type: integer\n                - type: string\n                description: |-\n                  nativeHistogramMinBucketFactor defines if the growth factor of one bucket to the next is smaller than this,\n                  buckets will be merged to increase the factor sufficiently.\n                  It requires Prometheus >= v2.50.0.\n                pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                x-kubernetes-int-or-string: true\n              podTargetLabels:\n                description: |-\n                  podTargetLabels defines the labels which are transferred from the\n                  associated Kubernetes `Pod` object onto the ingested metrics.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: |-\n                  sampleLimit defines a per-scrape limit on the number of scraped samples\n                  that will be accepted.\n                format: int64\n                type: integer\n              scrapeClass:\n                description: scrapeClass defines the scrape class to apply.\n                minLength: 1\n                type: string\n              scrapeClassicHistograms:\n                description: |-\n                  scrapeClassicHistograms defines whether to scrape a classic histogram that is also exposed as a native histogram.\n                  It requires Prometheus >= v2.45.0.\n\n                  Notice: `scrapeClassicHistograms` corresponds to the `always_scrape_classic_histograms` field in the Prometheus configuration.\n                type: boolean\n              scrapeNativeHistograms:\n                description: |-\n                  scrapeNativeHistograms defines whether to enable scraping of native histograms.\n                  It requires Prometheus >= v3.8.0.\n                type: boolean\n              scrapeProtocols:\n                description: |-\n                  scrapeProtocols defines the protocols to negotiate during a scrape. It tells clients the\n                  protocols supported by Prometheus in order of preference (from most to least preferred).\n\n                  If unset, Prometheus uses its default value.\n\n                  It requires Prometheus >= v2.49.0.\n                items:\n                  description: |-\n                    ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\n                    Supported values are:\n                    * `OpenMetricsText0.0.1`\n                    * `OpenMetricsText1.0.0`\n                    * `PrometheusProto`\n                    * `PrometheusText0.0.4`\n                    * `PrometheusText1.0.0`\n                  enum:\n                  - PrometheusProto\n                  - OpenMetricsText0.0.1\n                  - OpenMetricsText1.0.0\n                  - PrometheusText0.0.4\n                  - PrometheusText1.0.0\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              selector:\n                description: selector defines the label selector to select the Kubernetes `Endpoints` objects to scrape metrics from.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              selectorMechanism:\n                description: |-\n                  selectorMechanism defines the mechanism used to select the endpoints to scrape.\n                  By default, the selection process relies on relabel configurations to filter the discovered targets.\n                  Alternatively, you can opt in for role selectors, which may offer better efficiency in large clusters.\n                  Which strategy is best for your use case needs to be carefully evaluated.\n\n                  It requires Prometheus >= v2.17.0.\n                enum:\n                - RelabelConfig\n                - RoleSelector\n                type: string\n              serviceDiscoveryRole:\n                description: |-\n                  serviceDiscoveryRole defines the service discovery role used to discover targets.\n\n                  If set, the value should be either \"Endpoints\" or \"EndpointSlice\".\n                  Otherwise it defaults to the value defined in the\n                  Prometheus/PrometheusAgent resource.\n                enum:\n                - Endpoints\n                - EndpointSlice\n                type: string\n              targetLabels:\n                description: |-\n                  targetLabels defines the labels which are transferred from the\n                  associated Kubernetes `Service` object onto the ingested metrics.\n                items:\n                  type: string\n                type: array\n              targetLimit:\n                description: |-\n                  targetLimit defines a limit on the number of scraped targets that will\n                  be accepted.\n                format: int64\n                type: integer\n            required:\n            - endpoints\n            - selector\n            type: object\n          status:\n            description: |-\n              status defines the status subresource. It is under active development and is updated only when the\n              \"StatusForConfigurationResources\" feature gate is enabled.\n\n              Most recent observed status of the ServiceMonitor. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              bindings:\n                description: bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.\n                items:\n                  description: WorkloadBinding is a link between a configuration resource and a workload resource.\n                  properties:\n                    conditions:\n                      description: conditions defines the current state of the configuration resource when bound to the referenced Workload object.\n                      items:\n                        description: ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.\n                        properties:\n                          lastTransitionTime:\n                            description: lastTransitionTime defines the time of the last update to the current status property.\n                            format: date-time\n                            type: string\n                          message:\n                            description: message defines the human-readable message indicating details for the condition's last transition.\n                            type: string\n                          observedGeneration:\n                            description: |-\n                              observedGeneration defines the .metadata.generation that the\n                              condition was set based upon. For instance, if `.metadata.generation` is\n                              currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                              condition is out of date with respect to the current state of the object.\n                            format: int64\n                            type: integer\n                          reason:\n                            description: reason for the condition's last transition.\n                            type: string\n                          status:\n                            description: status of the condition.\n                            minLength: 1\n                            type: string\n                          type:\n                            description: |-\n                              type of the condition being reported.\n                              Currently, only \"Accepted\" is supported.\n                            enum:\n                            - Accepted\n                            minLength: 1\n                            type: string\n                        required:\n                        - lastTransitionTime\n                        - status\n                        - type\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - type\n                      x-kubernetes-list-type: map\n                    group:\n                      description: group defines the group of the referenced resource.\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name defines the name of the referenced object.\n                      minLength: 1\n                      type: string\n                    namespace:\n                      description: namespace defines the namespace of the referenced object.\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).\n                      enum:\n                      - prometheuses\n                      - prometheusagents\n                      - thanosrulers\n                      - alertmanagers\n                      type: string\n                  required:\n                  - group\n                  - name\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - group\n                - resource\n                - name\n                - namespace\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "manifests/setup/0thanosrulerCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.19.0\n    operator.prometheus.io/version: 0.90.0\n  name: thanosrulers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ThanosRuler\n    listKind: ThanosRulerList\n    plural: thanosrulers\n    shortNames:\n    - ruler\n    singular: thanosruler\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Thanos Ruler\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          The `ThanosRuler` custom resource definition (CRD) defines a desired [Thanos Ruler](https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md) setup to run in a Kubernetes cluster.\n\n          A `ThanosRuler` instance requires at least one compatible Prometheus API endpoint (either Thanos Querier or Prometheus services).\n\n          The resource defines via label and namespace selectors which `PrometheusRule` objects should be associated to the deployed Thanos Ruler instances.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: |-\n              spec defines the specification of the desired behavior of the ThanosRuler cluster. More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              additionalArgs:\n                description: |-\n                  additionalArgs defines how to add additional arguments for the ThanosRuler container.\n                  It is intended for e.g. activating hidden flags which are not supported by\n                  the dedicated configuration options yet. The arguments are passed as-is to the\n                  ThanosRuler container which may cause issues if they are invalid or not supported\n                  by the given ThanosRuler version.\n                  In case of an argument conflict (e.g. an argument which is already set by the\n                  operator itself) or when providing an invalid argument the reconciliation will\n                  fail and an error will be logged.\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: value defines the argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              affinity:\n                description: affinity defines when specified, the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node matches the corresponding matchExpressions; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: |-\n                            An empty preferred scheduling term matches all objects with implicit weight 0\n                            (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to an update), the system\n                          may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: |-\n                                A null or empty node selector term matches no objects. The requirements of\n                                them are ANDed.\n                                The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: |-\n                                      A node selector requirement is a selector that contains values, a key, and an operator\n                                      that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          Represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          An array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. If the operator is Gt or Lt, the values\n                                          array must have a single element, which will be interpreted as an integer.\n                                          This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                            x-kubernetes-list-type: atomic\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and adding\n                          \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          The scheduler will prefer to schedule pods to nodes that satisfy\n                          the anti-affinity expressions specified by this field, but it may choose\n                          a node that violates one or more of the expressions. The node that is\n                          most preferred is the one with the greatest sum of weights, i.e.\n                          for each node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions, etc.),\n                          compute a sum by iterating through the elements of this field and subtracting\n                          \"weight\" from the sum if the node has pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: |-\n                                    A label query over a set of resources, in this case pods.\n                                    If it's null, this PodAffinityTerm matches with no Pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                matchLabelKeys:\n                                  description: |-\n                                    MatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                mismatchLabelKeys:\n                                  description: |-\n                                    MismatchLabelKeys is a set of pod label keys to select which pods will\n                                    be taken into consideration. The keys are used to lookup values from the\n                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                    to select the group of existing pods which pods will be taken into consideration\n                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                    pod labels will be ignored. The default value is empty.\n                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                namespaceSelector:\n                                  description: |-\n                                    A label query over the set of namespaces that the term applies to.\n                                    The term is applied to the union of the namespaces selected by this field\n                                    and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list means \"this pod's namespace\".\n                                    An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: |-\n                                    namespaces specifies a static list of namespace names that the term applies to.\n                                    The term is applied to the union of the namespaces listed in this field\n                                    and the ones selected by namespaceSelector.\n                                    null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                topologyKey:\n                                  description: |-\n                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey matches that of any node on which any of the\n                                    selected pods is running.\n                                    Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: |-\n                                weight associated with matching the corresponding podAffinityTerm,\n                                in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: |-\n                          If the anti-affinity requirements specified by this field are not met at\n                          scheduling time, the pod will not be scheduled onto the node.\n                          If the anti-affinity requirements specified by this field cease to be met\n                          at some point during pod execution (e.g. due to a pod label update), the\n                          system may or may not try to eventually evict the pod from its node.\n                          When there are multiple elements, the lists of nodes corresponding to each\n                          podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: |-\n                            Defines a set of pods (namely those matching the labelSelector\n                            relative to the given namespace(s)) that this pod should be\n                            co-located (affinity) or not co-located (anti-affinity) with,\n                            where co-located is defined as running on a node whose value of\n                            the label with key <topologyKey> matches that of any node on which\n                            a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: |-\n                                A label query over a set of resources, in this case pods.\n                                If it's null, this PodAffinityTerm matches with no Pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            matchLabelKeys:\n                              description: |-\n                                MatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.\n                                Also, matchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            mismatchLabelKeys:\n                              description: |-\n                                MismatchLabelKeys is a set of pod label keys to select which pods will\n                                be taken into consideration. The keys are used to lookup values from the\n                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\n                                to select the group of existing pods which pods will be taken into consideration\n                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\n                                pod labels will be ignored. The default value is empty.\n                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\n                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            namespaceSelector:\n                              description: |-\n                                A label query over the set of namespaces that the term applies to.\n                                The term is applied to the union of the namespaces selected by this field\n                                and the ones listed in the namespaces field.\n                                null selector and null or empty namespaces list means \"this pod's namespace\".\n                                An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: |-\n                                      A label selector requirement is a selector that contains values, a key, and an operator that\n                                      relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: |-\n                                          operator represents a key's relationship to a set of values.\n                                          Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: |-\n                                          values is an array of string values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                          the values array must be empty. This array is replaced during a strategic\n                                          merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: |-\n                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                    operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: |-\n                                namespaces specifies a static list of namespace names that the term applies to.\n                                The term is applied to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector.\n                                null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            topologyKey:\n                              description: |-\n                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where co-located is defined as running on a node\n                                whose value of the label with key topologyKey matches that of any node on which any of the\n                                selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                        x-kubernetes-list-type: atomic\n                    type: object\n                type: object\n              alertDropLabels:\n                description: |-\n                  alertDropLabels defines the label names which should be dropped in Thanos Ruler\n                  alerts.\n\n                  The replica label `thanos_ruler_replica` will always be dropped from the alerts.\n                items:\n                  type: string\n                type: array\n              alertQueryUrl:\n                description: |-\n                  alertQueryUrl defines how Thanos Ruler will set in the 'Source' field\n                  of all alerts.\n                  Maps to the '--alert.query-url' CLI arg.\n                type: string\n              alertRelabelConfigFile:\n                description: |-\n                  alertRelabelConfigFile defines the path to the alert relabeling configuration file.\n\n                  Alert relabel configuration must have the form as specified in the\n                  official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\n\n                  The operator performs no validation of the configuration file.\n\n                  This field takes precedence over `alertRelabelConfig`.\n                type: string\n              alertRelabelConfigs:\n                description: |-\n                  alertRelabelConfigs defines the alert relabeling in Thanos Ruler.\n\n                  Alert relabel configuration must have the form as specified in the\n                  official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\n\n                  The operator performs no validation of the configuration.\n\n                  `alertRelabelConfigFile` takes precedence over this field.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersConfig:\n                description: |-\n                  alertmanagersConfig defines the list of Alertmanager endpoints to send alerts to.\n\n                  The configuration format is defined at https://thanos.io/tip/components/rule.md/#alertmanager.\n\n                  It requires Thanos >= v0.10.0.\n\n                  The operator performs no validation of the configuration.\n\n                  This field takes precedence over `alertmanagersUrl`.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersUrl:\n                description: |-\n                  alertmanagersUrl defines the list of Alertmanager endpoints to send alerts to.\n\n                  For Thanos >= v0.10.0, it is recommended to use `alertmanagersConfig` instead.\n\n                  `alertmanagersConfig` takes precedence over this field.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: |-\n                  containers allows injecting additional containers or modifying operator\n                  generated containers. This can be used to allow adding an authentication\n                  proxy to the Pods or to change the behavior of an operator generated\n                  container. Containers described here modify an operator generated\n                  container if they share the same name and modifications are done via a\n                  strategic merge patch.\n\n                  The names of containers managed by the operator are:\n                  * `thanos-ruler`\n                  * `config-reloader`\n\n                  Overriding containers which are managed by the operator require careful\n                  testing, especially when upgrading to a new version of the operator.\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              dnsConfig:\n                description: dnsConfig defines Defines the DNS configuration for the pods.\n                properties:\n                  nameservers:\n                    description: |-\n                      nameservers defines the list of DNS name server IP addresses.\n                      This will be appended to the base nameservers generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                  options:\n                    description: |-\n                      options defines the list of DNS resolver options.\n                      This will be merged with the base options generated from DNSPolicy.\n                      Resolution options given in Options\n                      will override those that appear in the base DNSPolicy.\n                    items:\n                      description: PodDNSConfigOption defines DNS resolver options of a pod.\n                      properties:\n                        name:\n                          description: name is required and must be unique.\n                          minLength: 1\n                          type: string\n                        value:\n                          description: value is optional.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  searches:\n                    description: |-\n                      searches defines the list of DNS search domains for host-name lookup.\n                      This will be appended to the base search paths generated from DNSPolicy.\n                    items:\n                      minLength: 1\n                      type: string\n                    type: array\n                    x-kubernetes-list-type: set\n                type: object\n              dnsPolicy:\n                description: dnsPolicy defines the DNS policy for the pods.\n                enum:\n                - ClusterFirstWithHostNet\n                - ClusterFirst\n                - Default\n                - None\n                type: string\n              enableFeatures:\n                description: |-\n                  enableFeatures defines how to setup Thanos Ruler feature flags. By default, no features are enabled.\n\n                  Enabling features which are disabled by default is entirely outside the\n                  scope of what the maintainers will support and by doing so, you accept\n                  that this behaviour may break at any time without notice.\n\n                  For more information see https://thanos.io/tip/components/rule.md/\n\n                  It requires Thanos >= 0.39.0.\n                items:\n                  minLength: 1\n                  type: string\n                type: array\n                x-kubernetes-list-type: set\n              enableServiceLinks:\n                description: enableServiceLinks defines whether information about services should be injected into pod's environment variables\n                type: boolean\n              enforcedNamespaceLabel:\n                description: |-\n                  enforcedNamespaceLabel enforces adding a namespace label of origin for each alert\n                  and metric that is user created. The label value will always be the namespace of the object that is\n                  being created.\n                type: string\n              evaluationInterval:\n                default: 15s\n                description: evaluationInterval defines the interval between consecutive evaluations.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: |-\n                  excludedFromEnforcement defines the list of references to PrometheusRule objects\n                  to be excluded from enforcing a namespace label of origin.\n                  Applies only if enforcedNamespaceLabel set to true.\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: group of the referent. When not specified, it defaults to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: name of the referent. When not set, all resources in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: |-\n                        namespace of the referent.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      - scrapeconfigs\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalPrefix:\n                description: |-\n                  externalPrefix defines the Thanos Ruler instances will be available under. This is\n                  necessary to generate correct URLs. This is necessary if Thanos Ruler is not\n                  served from root of a DNS name.\n                type: string\n              grpcServerTlsConfig:\n                description: |-\n                  grpcServerTlsConfig defines the gRPC server from which Thanos Querier reads\n                  recorded rule data.\n\n                  Note: Currently only the `minVersion`, `caFile`, `certFile`, and `keyFile` fields are supported.\n                properties:\n                  ca:\n                    description: ca defines the Certificate authority used when verifying server certificates.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  caFile:\n                    description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                    type: string\n                  cert:\n                    description: cert defines the Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: configMap defines the ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: secret defines the Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  certFile:\n                    description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                    type: string\n                  insecureSkipVerify:\n                    description: insecureSkipVerify defines how to disable target certificate validation.\n                    type: boolean\n                  keyFile:\n                    description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                    type: string\n                  keySecret:\n                    description: keySecret defines the Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        default: \"\"\n                        description: |-\n                          Name of the referent.\n                          This field is effectively required, but due to backwards compatibility is\n                          allowed to be empty. Instances of this type with an empty value here are\n                          almost certainly wrong.\n                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  maxVersion:\n                    description: |-\n                      maxVersion defines the maximum acceptable TLS version.\n\n                      It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                    enum:\n                    - TLS10\n                    - TLS11\n                    - TLS12\n                    - TLS13\n                    type: string\n                  minVersion:\n                    description: |-\n                      minVersion defines the minimum acceptable TLS version.\n\n                      It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                    enum:\n                    - TLS10\n                    - TLS11\n                    - TLS12\n                    - TLS13\n                    type: string\n                  serverName:\n                    description: serverName is used to verify the hostname for the targets.\n                    type: string\n                type: object\n              hostAliases:\n                description: hostAliases defines pods' hostAliases configuration\n                items:\n                  description: |-\n                    HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\n                    pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: hostnames defines hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: ip defines the IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostUsers:\n                description: |-\n                  hostUsers supports the user space in Kubernetes.\n\n                  More info: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/\n\n                  The feature requires at least Kubernetes 1.28 with the `UserNamespacesSupport` feature gate enabled.\n                  Starting Kubernetes 1.33, the feature is enabled by default.\n                type: boolean\n              image:\n                description: image defines Thanos container image URL.\n                type: string\n              imagePullPolicy:\n                description: |-\n                  imagePullPolicy defines for the 'thanos', 'init-config-reloader' and 'config-reloader' containers.\n                  See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: |-\n                  imagePullSecrets defines an optional list of references to secrets in the same namespace\n                  to use for pulling thanos images from registries\n                  see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: |-\n                    LocalObjectReference contains enough information to let you locate the\n                    referenced object inside the same namespace.\n                  properties:\n                    name:\n                      default: \"\"\n                      description: |-\n                        Name of the referent.\n                        This field is effectively required, but due to backwards compatibility is\n                        allowed to be empty. Instances of this type with an empty value here are\n                        almost certainly wrong.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: |-\n                  initContainers allows injecting initContainers to the Pod definition.\n                  Those can be used to e.g. fetch secrets for injection into the\n                  configuration from external sources. Any errors during the execution of\n                  an initContainer will lead to a restart of the Pod. More info:\n                  https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: |-\n                        Arguments to the entrypoint.\n                        The container image's CMD is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    command:\n                      description: |-\n                        Entrypoint array. Not executed within a shell.\n                        The container image's ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container's environment. If a variable\n                        cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\n                        of whether the variable exists or not. Cannot be updated.\n                        More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    env:\n                      description: |-\n                        List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: |-\n                              Name of the environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          value:\n                            description: |-\n                              Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in the container and\n                              any service environment variables. If a variable cannot be resolved,\n                              the reference in the input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n                              \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                              Escaped references will never be expanded, regardless of whether the variable\n                              exists or not.\n                              Defaults to \"\".\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: |-\n                                  Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,\n                                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fileKeyRef:\n                                description: |-\n                                  FileKeyRef selects a key of the env file.\n                                  Requires the EnvFiles feature gate to be enabled.\n                                properties:\n                                  key:\n                                    description: |-\n                                      The key within the env file. An invalid key will prevent the pod from starting.\n                                      The keys defined within a source may consist of any printable ASCII characters except '='.\n                                      During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.\n                                    type: string\n                                  optional:\n                                    default: false\n                                    description: |-\n                                      Specify whether the file or its key must be defined. If the file or key\n                                      does not exist, then the env var is not published.\n                                      If optional is set to true and the specified key does not exist,\n                                      the environment variable will not be set in the Pod's containers.\n\n                                      If optional is set to false and the specified key does not exist,\n                                      an error will be returned during Pod creation.\n                                    type: boolean\n                                  path:\n                                    description: |-\n                                      The path within the volume from which to select the file.\n                                      Must be relative and may not contain the '..' path or start with '..'.\n                                    type: string\n                                  volumeName:\n                                    description: The name of the volume mount containing the env file.\n                                    type: string\n                                required:\n                                - key\n                                - path\n                                - volumeName\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - name\n                      x-kubernetes-list-type: map\n                    envFrom:\n                      description: |-\n                        List of sources to populate environment variables in the container.\n                        The keys defined within a source may consist of any printable ASCII characters except '='.\n                        When a key exists in multiple\n                        sources, the value associated with the last source will take precedence.\n                        Values defined by an Env with a duplicate key will take precedence.\n                        Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps or Secrets\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: |-\n                              Optional text to prepend to the name of each environment variable.\n                              May consist of any printable ASCII characters except '='.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    image:\n                      description: |-\n                        Container image name.\n                        More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management to default or override\n                        container images in workload controllers like Deployments and StatefulSets.\n                      type: string\n                    imagePullPolicy:\n                      description: |-\n                        Image pull policy.\n                        One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n                      type: string\n                    lifecycle:\n                      description: |-\n                        Actions that the management system should take in response to container lifecycle events.\n                        Cannot be updated.\n                      properties:\n                        postStart:\n                          description: |-\n                            PostStart is called immediately after a container is created. If the handler fails,\n                            the container is terminated and restarted according to its restart policy.\n                            Other management of the container blocks until the hook completes.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: |-\n                            PreStop is called immediately before a container is terminated due to an\n                            API request or management event such as liveness/startup probe failure,\n                            preemption, resource contention, etc. The handler is not called if the\n                            container crashes or exits. The Pod's termination grace period countdown begins before the\n                            PreStop hook is executed. Regardless of the outcome of the handler, the\n                            container will eventually terminate within the Pod's termination grace\n                            period (unless delayed by finalizers). Other management of the container blocks until the hook completes\n                            or until the termination grace period is reached.\n                            More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n                          properties:\n                            exec:\n                              description: Exec specifies a command to execute in the container.\n                              properties:\n                                command:\n                                  description: |-\n                                    Command is the command line to execute inside the container, the working directory for the\n                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                    a shell, you need to explicitly call out to that shell.\n                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies an HTTP GET request to perform.\n                              properties:\n                                host:\n                                  description: |-\n                                    Host name to connect to, defaults to the pod IP. You probably want to set\n                                    \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: |-\n                                          The header field name.\n                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Name or number of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: |-\n                                    Scheme to use for connecting to the host.\n                                    Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            sleep:\n                              description: Sleep represents a duration that the container should sleep.\n                              properties:\n                                seconds:\n                                  description: Seconds is the number of seconds to sleep.\n                                  format: int64\n                                  type: integer\n                              required:\n                              - seconds\n                              type: object\n                            tcpSocket:\n                              description: |-\n                                Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\n                                for backward compatibility. There is no validation of this field and\n                                lifecycle hooks will fail at runtime when it is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: |-\n                                    Number or name of the port to access on the container.\n                                    Number must be in the range 1 to 65535.\n                                    Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        stopSignal:\n                          description: |-\n                            StopSignal defines which signal will be sent to a container when it is being stopped.\n                            If not specified, the default is defined by the container runtime in use.\n                            StopSignal can only be set for Pods with a non-empty .spec.os.name\n                          type: string\n                      type: object\n                    livenessProbe:\n                      description: |-\n                        Periodic probe of container liveness.\n                        Container will be restarted if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: |-\n                        Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: |-\n                        List of ports to expose from the container. Not specifying a port here\n                        DOES NOT prevent that port from being exposed. Any port which is\n                        listening on the default \"0.0.0.0\" address inside a container will be\n                        accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt the data.\n                        For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: |-\n                              Number of port to expose on the pod's IP address.\n                              This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: |-\n                              Number of port to expose on the host.\n                              If specified, this must be a valid port number, 0 < x < 65536.\n                              If HostNetwork is specified, this must match ContainerPort.\n                              Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: |-\n                              If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\n                              named port in a pod must have a unique name. Name for the port that can be\n                              referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: |-\n                              Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: |-\n                        Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe fails.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: |-\n                        Resources resize policy for the container.\n                        This field cannot be set on ephemeral containers.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: |-\n                              Name of the resource to which this resource resize policy applies.\n                              Supported values: cpu, memory.\n                            type: string\n                          restartPolicy:\n                            description: |-\n                              Restart policy to apply when specified resource is resized.\n                              If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: |-\n                        Compute Resources required by this container.\n                        Cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                      properties:\n                        claims:\n                          description: |-\n                            Claims lists the names of resources, defined in spec.resourceClaims,\n                            that are used by this container.\n\n                            This field depends on the\n                            DynamicResourceAllocation feature gate.\n\n                            This field is immutable. It can only be set for containers.\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: |-\n                                  Name must match the name of one entry in pod.spec.resourceClaims of\n                                  the Pod where this field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                              request:\n                                description: |-\n                                  Request is the name chosen for a request in the referenced claim.\n                                  If empty, everything from the claim is made available, otherwise\n                                  only the result of this request.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Limits describes the maximum amount of compute resources allowed.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: |-\n                            Requests describes the minimum amount of compute resources required.\n                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                          type: object\n                      type: object\n                    restartPolicy:\n                      description: |-\n                        RestartPolicy defines the restart behavior of individual containers in a pod.\n                        This overrides the pod-level restart policy. When this field is not specified,\n                        the restart behavior is defined by the Pod's restart policy and the container type.\n                        Additionally, setting the RestartPolicy as \"Always\" for the init container will\n                        have the following effect:\n                        this init container will be continually restarted on\n                        exit until all regular containers have terminated. Once all regular\n                        containers have completed, all init containers with restartPolicy \"Always\"\n                        will be shut down. This lifecycle differs from normal init containers and\n                        is often referred to as a \"sidecar\" container. Although this init\n                        container still starts in the init container sequence, it does not wait\n                        for the container to complete before proceeding to the next init\n                        container. Instead, the next init container starts immediately after this\n                        init container is started, or after any startupProbe has successfully\n                        completed.\n                      type: string\n                    restartPolicyRules:\n                      description: |-\n                        Represents a list of rules to be checked to determine if the\n                        container should be restarted on exit. The rules are evaluated in\n                        order. Once a rule matches a container exit condition, the remaining\n                        rules are ignored. If no rule matches the container exit condition,\n                        the Container-level restart policy determines the whether the container\n                        is restarted or not. Constraints on the rules:\n                        - At most 20 rules are allowed.\n                        - Rules can have the same action.\n                        - Identical rules are not forbidden in validations.\n                        When rules are specified, container MUST set RestartPolicy explicitly\n                        even it if matches the Pod's RestartPolicy.\n                      items:\n                        description: ContainerRestartRule describes how a container exit is handled.\n                        properties:\n                          action:\n                            description: |-\n                              Specifies the action taken on a container exit if the requirements\n                              are satisfied. The only possible value is \"Restart\" to restart the\n                              container.\n                            type: string\n                          exitCodes:\n                            description: Represents the exit codes to check on container exits.\n                            properties:\n                              operator:\n                                description: |-\n                                  Represents the relationship between the container exit code(s) and the\n                                  specified values. Possible values are:\n                                  - In: the requirement is satisfied if the container exit code is in the\n                                    set of specified values.\n                                  - NotIn: the requirement is satisfied if the container exit code is\n                                    not in the set of specified values.\n                                type: string\n                              values:\n                                description: |-\n                                  Specifies the set of values to check for container exit codes.\n                                  At most 255 elements are allowed.\n                                items:\n                                  format: int32\n                                  type: integer\n                                type: array\n                                x-kubernetes-list-type: set\n                            required:\n                            - operator\n                            type: object\n                        required:\n                        - action\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    securityContext:\n                      description: |-\n                        SecurityContext defines the security options the container should be run with.\n                        If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n                        More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: |-\n                            AllowPrivilegeEscalation controls whether a process can gain more\n                            privileges than its parent process. This bool directly controls if\n                            the no_new_privs flag will be set on the container process.\n                            AllowPrivilegeEscalation is true always when the container is:\n                            1) run as Privileged\n                            2) has CAP_SYS_ADMIN\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        appArmorProfile:\n                          description: |-\n                            appArmorProfile is the AppArmor options to use by this container. If set, this profile\n                            overrides the pod's appArmorProfile.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile loaded on the node that should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must match the loaded name of the profile.\n                                Must be set if and only if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of AppArmor profile will be applied.\n                                Valid options are:\n                                  Localhost - a profile pre-loaded on the node.\n                                  RuntimeDefault - the container runtime's default profile.\n                                  Unconfined - no AppArmor enforcement.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        capabilities:\n                          description: |-\n                            The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by the container runtime.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        privileged:\n                          description: |-\n                            Run container in privileged mode.\n                            Processes in privileged containers are essentially equivalent to root on the host.\n                            Defaults to false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: |-\n                            procMount denotes the type of proc mount to use for the containers.\n                            The default value is Default which uses the container runtime defaults for\n                            readonly paths and masked paths.\n                            This requires the ProcMountType feature flag to be enabled.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: |-\n                            Whether this container has a read-only root filesystem.\n                            Default is false.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: |-\n                            The GID to run the entrypoint of the container process.\n                            Uses runtime default if unset.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: |-\n                            Indicates that the container must run as a non-root user.\n                            If true, the Kubelet will validate the image at runtime to ensure that it\n                            does not run as UID 0 (root) and fail to start the container if it does.\n                            If unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: |-\n                            The UID to run the entrypoint of the container process.\n                            Defaults to user specified in image metadata if unspecified.\n                            May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: |-\n                            The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a random SELinux context for each\n                            container.  May also be set in PodSecurityContext.  If set in both SecurityContext and\n                            PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: |-\n                            The seccomp options to use by this container. If seccomp options are\n                            provided at both the pod & container level, the container options\n                            override the pod options.\n                            Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: |-\n                                localhostProfile indicates a profile defined in a file on the node should be used.\n                                The profile must be preconfigured on the node to work.\n                                Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                                Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                              type: string\n                            type:\n                              description: |-\n                                type indicates which kind of seccomp profile will be applied.\n                                Valid options are:\n\n                                Localhost - a profile defined in a file on the node should be used.\n                                RuntimeDefault - the container runtime default profile should be used.\n                                Unconfined - no profile should be applied.\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: |-\n                            The Windows specific settings applied to all containers.\n                            If unspecified, the options from the PodSecurityContext will be used.\n                            If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: |-\n                                GMSACredentialSpec is where the GMSA admission webhook\n                                (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                                GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: |-\n                                HostProcess determines if a container should be run as a 'Host Process' container.\n                                All of a Pod's containers must have the same effective HostProcess value\n                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                                In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: |-\n                                The UserName in Windows to run the entrypoint of the container process.\n                                Defaults to the user specified in image metadata if unspecified.\n                                May also be set in PodSecurityContext. If set in both SecurityContext and\n                                PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: |-\n                        StartupProbe indicates that the Pod has successfully initialized.\n                        If specified, no other probes are executed until this completes successfully.\n                        If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\n                        This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\n                        when it might take a long time to load data or warm a cache, than during steady-state operation.\n                        This cannot be updated.\n                        More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                      properties:\n                        exec:\n                          description: Exec specifies a command to execute in the container.\n                          properties:\n                            command:\n                              description: |-\n                                Command is the command line to execute inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is\n                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\n                                a shell, you need to explicitly call out to that shell.\n                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                              x-kubernetes-list-type: atomic\n                          type: object\n                        failureThreshold:\n                          description: |-\n                            Minimum consecutive failures for the probe to be considered failed after having succeeded.\n                            Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies a GRPC HealthCheckRequest.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              default: \"\"\n                              description: |-\n                                Service is the name of the service to place in the gRPC HealthCheckRequest\n                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n                                If this is not specified, the default behavior is defined by gRPC.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies an HTTP GET request to perform.\n                          properties:\n                            host:\n                              description: |-\n                                Host name to connect to, defaults to the pod IP. You probably want to set\n                                \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: |-\n                                      The header field name.\n                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Name or number of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: |-\n                                Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: |-\n                            Number of seconds after the container has started before liveness probes are initiated.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: |-\n                            How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: |-\n                            Minimum consecutive successes for the probe to be considered successful after having failed.\n                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies a connection to a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: |-\n                                Number or name of the port to access on the container.\n                                Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: |-\n                            Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\n                            The grace period is the duration in seconds after the processes running in the pod are sent\n                            a termination signal and the time when the processes are forcibly halted with a kill signal.\n                            Set this value longer than the expected cleanup time for your process.\n                            If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\n                            value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates stop immediately via\n                            the kill signal (no opportunity to shut down).\n                            This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\n                            Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: |-\n                            Number of seconds after which the probe times out.\n                            Defaults to 1 second. Minimum value is 1.\n                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: |-\n                        Whether this container should allocate a buffer for stdin in the container runtime. If this\n                        is not set, reads from stdin in the container will always result in EOF.\n                        Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: |-\n                        Whether the container runtime should close the stdin channel after it has been opened by\n                        a single attach. When stdin is true the stdin stream will remain open across multiple attach\n                        sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\n                        first client attaches to stdin, and then remains open and accepts data until the client disconnects,\n                        at which time stdin is closed and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin will never receive an EOF.\n                        Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: |-\n                        Optional: Path at which the file to which the container's termination message\n                        will be written is mounted into the container's filesystem.\n                        Message written is intended to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes. The total message length across\n                        all containers will be limited to 12kb.\n                        Defaults to /dev/termination-log.\n                        Cannot be updated.\n                      type: string\n                    terminationMessagePolicy:\n                      description: |-\n                        Indicate how the termination message should be populated. File will use the contents of\n                        terminationMessagePath to populate the container status message on both success and failure.\n                        FallbackToLogsOnError will use the last chunk of container log output if the termination\n                        message file is empty and the container exited with an error.\n                        The log output is limited to 2048 bytes or 80 lines, whichever is smaller.\n                        Defaults to File.\n                        Cannot be updated.\n                      type: string\n                    tty:\n                      description: |-\n                        Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\n                        Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - devicePath\n                      x-kubernetes-list-type: map\n                    volumeMounts:\n                      description: |-\n                        Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: |-\n                              Path within the container at which the volume should be mounted.  Must\n                              not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: |-\n                              mountPropagation determines how mounts are propagated from the host\n                              to container and the other way around.\n                              When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                              When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                              (which defaults to None).\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: |-\n                              Mounted read-only if true, read-write otherwise (false or unspecified).\n                              Defaults to false.\n                            type: boolean\n                          recursiveReadOnly:\n                            description: |-\n                              RecursiveReadOnly specifies whether read-only mounts should be handled\n                              recursively.\n\n                              If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                              If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                              recursively read-only.  If this field is set to IfPossible, the mount is made\n                              recursively read-only, if it is supported by the container runtime.  If this\n                              field is set to Enabled, the mount is made recursively read-only if it is\n                              supported by the container runtime, otherwise the pod will not be started and\n                              an error will be generated to indicate the reason.\n\n                              If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                              None (or be unspecified, which defaults to None).\n\n                              If this field is not specified, it is treated as an equivalent of Disabled.\n                            type: string\n                          subPath:\n                            description: |-\n                              Path within the volume from which the container's volume should be mounted.\n                              Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: |-\n                              Expanded path within the volume from which the container's volume should be mounted.\n                              Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                              Defaults to \"\" (volume's root).\n                              SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - mountPath\n                      x-kubernetes-list-type: map\n                    workingDir:\n                      description: |-\n                        Container's working directory.\n                        If not specified, the container runtime's default will be used, which\n                        might be configured in the container image.\n                        Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              labels:\n                additionalProperties:\n                  type: string\n                description: |-\n                  labels defines the external label pairs of the ThanosRuler resource.\n\n                  A default replica label `thanos_ruler_replica` will be always added as a\n                  label with the value of the pod's name.\n                type: object\n              listenLocal:\n                description: |-\n                  listenLocal defines the Thanos ruler listen on loopback, so that it\n                  does not bind against the Pod IP.\n                type: boolean\n              logFormat:\n                description: logFormat for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: logLevel for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: |-\n                  minReadySeconds defines the minimum number of seconds for which a newly created pod should be ready\n                  without any of its container crashing for it to be considered available.\n\n                  If unset, pods will be considered available as soon as they are ready.\n                format: int32\n                minimum: 0\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: nodeSelector defines which Nodes the Pods are scheduled on.\n                type: object\n              objectStorageConfig:\n                description: |-\n                  objectStorageConfig defines the configuration format is defined at https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\n\n                  The operator performs no validation of the configuration.\n\n                  `objectStorageConfigFile` takes precedence over this field.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              objectStorageConfigFile:\n                description: |-\n                  objectStorageConfigFile defines the path of the object storage configuration file.\n\n                  The configuration format is defined at https://thanos.io/tip/thanos/storage.md/#configuring-access-to-object-storage\n\n                  The operator performs no validation of the configuration file.\n\n                  This field takes precedence over `objectStorageConfig`.\n                type: string\n              paused:\n                description: |-\n                  paused defines when a ThanosRuler deployment is paused, no actions except for deletion\n                  will be performed on the underlying objects.\n                type: boolean\n              podManagementPolicy:\n                description: |-\n                  podManagementPolicy defines the policy for creating/deleting pods when\n                  scaling up and down.\n\n                  Unlike the default StatefulSet behavior, the default policy is\n                  `Parallel` to avoid manual intervention in case a pod gets stuck during\n                  a rollout.\n\n                  Note that updating this value implies the recreation of the StatefulSet\n                  which incurs a service outage.\n                enum:\n                - OrderedReady\n                - Parallel\n                type: string\n              podMetadata:\n                description: |-\n                  podMetadata defines labels and annotations which are propagated to the ThanosRuler pods.\n\n                  The following items are reserved and cannot be overridden:\n                  * \"app.kubernetes.io/name\" label, set to \"thanos-ruler\".\n                  * \"app.kubernetes.io/managed-by\" label, set to \"prometheus-operator\".\n                  * \"app.kubernetes.io/instance\" label, set to the name of the ThanosRuler instance.\n                  * \"thanos-ruler\" label, set to the name of the ThanosRuler instance.\n                  * \"kubectl.kubernetes.io/default-container\" annotation, set to \"thanos-ruler\".\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      annotations defines an unstructured key value map stored with a resource that may be\n                      set by external tools to store and retrieve arbitrary metadata. They are not\n                      queryable and should be preserved when modifying objects.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      labels define the map of string keys and values that can be used to organize and categorize\n                      (scope and select) objects. May match selectors of replication controllers\n                      and services.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                    type: object\n                  name:\n                    description: |-\n                      name must be unique within a namespace. Is required when creating resources, although\n                      some resources may allow a client to request the generation of an appropriate name\n                      automatically. Name is primarily intended for creation idempotence and configuration\n                      definition.\n                      Cannot be updated.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: |-\n                  portName defines the port name used for the pods and governing service.\n                  Defaults to `web`.\n                type: string\n              priorityClassName:\n                description: priorityClassName defines the priority class assigned to the Pods\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: |-\n                  prometheusRulesExcludedFromEnforce defines a list of Prometheus rules to be excluded from enforcing\n                  of adding namespace labels. Works only if enforcedNamespaceLabel set to true.\n                  Make sure both ruleNamespace and ruleName are set for each pair\n                  Deprecated: use excludedFromEnforcement instead.\n                items:\n                  description: |-\n                    PrometheusRuleExcludeConfig enables users to configure excluded\n                    PrometheusRule names and their namespaces to be ignored while enforcing\n                    namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: ruleName defines the name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: ruleNamespace defines the namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              queryConfig:\n                description: |-\n                  queryConfig defines the list of Thanos Query endpoints from which to query metrics.\n\n                  The configuration format is defined at https://thanos.io/tip/components/rule.md/#query-api\n\n                  It requires Thanos >= v0.11.0.\n\n                  The operator performs no validation of the configuration.\n\n                  This field takes precedence over `queryEndpoints`.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              queryEndpoints:\n                description: |-\n                  queryEndpoints defines the list of Thanos Query endpoints from which to query metrics.\n\n                  For Thanos >= v0.11.0, it is recommended to use `queryConfig` instead.\n\n                  `queryConfig` takes precedence over this field.\n                items:\n                  type: string\n                type: array\n              remoteWrite:\n                description: |-\n                  remoteWrite defines the list of remote write configurations.\n\n                  When the list isn't empty, the ruler is configured with stateless mode.\n\n                  It requires Thanos >= 0.24.0.\n                items:\n                  description: |-\n                    RemoteWriteSpec defines the configuration to write samples from Prometheus\n                    to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: |-\n                        authorization section for the URL.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `sigv4`, `basicAuth`, `oauth2`, or `azureAd`.\n                      properties:\n                        credentials:\n                          description: credentials defines a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: credentialsFile defines the file to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: |-\n                            type defines the authentication type. The value is case-insensitive.\n\n                            \"Basic\" is not a supported value.\n\n                            Default: \"Bearer\"\n                          type: string\n                      type: object\n                    azureAd:\n                      description: |-\n                        azureAd for the URL.\n\n                        It requires Prometheus >= v2.45.0 or Thanos >= v0.31.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `sigv4`.\n                      properties:\n                        cloud:\n                          description: cloud defines the Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.\n                          enum:\n                          - AzureChina\n                          - AzureGovernment\n                          - AzurePublic\n                          type: string\n                        managedIdentity:\n                          description: |-\n                            managedIdentity defines the Azure User-assigned Managed identity.\n                            Cannot be set at the same time as `oauth`, `sdk` or `workloadIdentity`.\n                          properties:\n                            clientId:\n                              description: |-\n                                clientId defines the Azure User-assigned Managed identity.\n\n                                For Prometheus >= 3.5.0 and Thanos >= 0.40.0, this field is allowed to be empty to support system-assigned managed identities.\n                              minLength: 1\n                              type: string\n                          type: object\n                        oauth:\n                          description: |-\n                            oauth defines the oauth config that is being used to authenticate.\n                            Cannot be set at the same time as `managedIdentity`, `sdk` or `workloadIdentity`.\n\n                            It requires Prometheus >= v2.48.0 or Thanos >= v0.31.0.\n                          properties:\n                            clientId:\n                              description: clientId defines the clientId of the Azure Active Directory application that is being used to authenticate.\n                              minLength: 1\n                              type: string\n                            clientSecret:\n                              description: clientSecret specifies a key of a Secret containing the client secret of the Azure Active Directory application that is being used to authenticate.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            tenantId:\n                              description: tenantId is the tenant ID of the Azure Active Directory application that is being used to authenticate.\n                              minLength: 1\n                              pattern: ^[0-9a-zA-Z-.]+$\n                              type: string\n                          required:\n                          - clientId\n                          - clientSecret\n                          - tenantId\n                          type: object\n                        scope:\n                          description: |-\n                            scope is the custom OAuth 2.0 scope to request when acquiring tokens.\n                            It requires Prometheus >= 3.9.0. Currently not supported by Thanos.\n                          pattern: ^[\\w\\s:/.\\\\-]+$\n                          type: string\n                        sdk:\n                          description: |-\n                            sdk defines the Azure SDK config that is being used to authenticate.\n                            See https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication\n                            Cannot be set at the same time as `oauth`, `managedIdentity` or `workloadIdentity`.\n\n                            It requires Prometheus >= v2.52.0 or Thanos >= v0.36.0.\n                          properties:\n                            tenantId:\n                              description: tenantId defines the tenant ID of the azure active directory application that is being used to authenticate.\n                              pattern: ^[0-9a-zA-Z-.]+$\n                              type: string\n                          type: object\n                        workloadIdentity:\n                          description: |-\n                            workloadIdentity defines the Azure Workload Identity authentication.\n                            Cannot be set at the same time as `oauth`, `managedIdentity`, or `sdk`.\n\n                            It requires Prometheus >= 3.7.0. Currently not supported by Thanos.\n                          properties:\n                            clientId:\n                              description: clientId is the clientID of the Azure Active Directory application.\n                              minLength: 1\n                              type: string\n                            tenantId:\n                              description: tenantId is the tenant ID of the Azure Active Directory application.\n                              minLength: 1\n                              type: string\n                          required:\n                          - clientId\n                          - tenantId\n                          type: object\n                      type: object\n                    basicAuth:\n                      description: |-\n                        basicAuth configuration for the URL.\n\n                        Cannot be set at the same time as `sigv4`, `authorization`, `oauth2`, or `azureAd`.\n                      properties:\n                        password:\n                          description: |-\n                            password defines a key of a Secret containing the password for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: |-\n                            username defines a key of a Secret containing the username for\n                            authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: |-\n                        bearerToken is deprecated: this will be removed in a future release.\n                        *Warning: this field shouldn't be used because the token value appears\n                        in clear-text. Prefer using `authorization`.*\n                      type: string\n                    bearerTokenFile:\n                      description: |-\n                        bearerTokenFile defines the file from which to read bearer token for the URL.\n\n                        Deprecated: this will be removed in a future release. Prefer using `authorization`.\n                      type: string\n                    enableHTTP2:\n                      description: enableHTTP2 defines whether to enable HTTP2.\n                      type: boolean\n                    followRedirects:\n                      description: |-\n                        followRedirects defines whether HTTP requests follow HTTP 3xx redirects.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n                      type: boolean\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: |-\n                        headers defines the custom HTTP headers to be sent along with each remote write request.\n                        Be aware that headers that are set by Prometheus itself can't be overwritten.\n\n                        It requires Prometheus >= v2.25.0 or Thanos >= v0.24.0.\n                      type: object\n                    messageVersion:\n                      description: |-\n                        messageVersion defines the Remote Write message's version to use when writing to the endpoint.\n\n                        `Version1.0` corresponds to the `prometheus.WriteRequest` protobuf message introduced in Remote Write 1.0.\n                        `Version2.0` corresponds to the `io.prometheus.write.v2.Request` protobuf message introduced in Remote Write 2.0.\n\n                        When `Version2.0` is selected, Prometheus will automatically be\n                        configured to append the metadata of scraped metrics to the WAL.\n\n                        Before setting this field, consult with your remote storage provider\n                        what message version it supports.\n\n                        It requires Prometheus >= v2.54.0 or Thanos >= v0.37.0.\n                      enum:\n                      - V1.0\n                      - V2.0\n                      type: string\n                    metadataConfig:\n                      description: |-\n                        metadataConfig defines how to send a series metadata to the remote storage.\n\n                        When the field is empty, **no metadata** is sent. But when the field is\n                        null, metadata is sent.\n                      properties:\n                        maxSamplesPerSend:\n                          description: |-\n                            maxSamplesPerSend defines the maximum number of metadata samples per send.\n\n                            It requires Prometheus >= v2.29.0.\n                          format: int32\n                          minimum: -1\n                          type: integer\n                        send:\n                          description: send defines whether metric metadata is sent to the remote storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: sendInterval defines how frequently metric metadata is sent to the remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: |-\n                        name of the remote write queue, it must be unique if specified. The\n                        name is used in metrics and logging in order to differentiate queues.\n\n                        It requires Prometheus >= v2.15.0 or Thanos >= 0.24.0.\n                      type: string\n                    noProxy:\n                      description: |-\n                        noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                        that should be excluded from proxying. IP and domain names can\n                        contain port numbers.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: string\n                    oauth2:\n                      description: |-\n                        oauth2 configuration for the URL.\n\n                        It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `sigv4`, `authorization`, `basicAuth`, or `azureAd`.\n                      properties:\n                        clientId:\n                          description: |-\n                            clientId defines a key of a Secret or ConfigMap containing the\n                            OAuth2 client's ID.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: |-\n                            clientSecret defines a key of a Secret containing the OAuth2\n                            client's secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            endpointParams configures the HTTP parameters to append to the token\n                            URL.\n                          type: object\n                        noProxy:\n                          description: |-\n                            noProxy defines a comma-separated string that can contain IPs, CIDR notation, domain names\n                            that should be excluded from proxying. IP and domain names can\n                            contain port numbers.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: string\n                        proxyConnectHeader:\n                          additionalProperties:\n                            items:\n                              description: SecretKeySelector selects a key of a Secret.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                          description: |-\n                            proxyConnectHeader optionally specifies headers to send to\n                            proxies during CONNECT requests.\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        proxyFromEnvironment:\n                          description: |-\n                            proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                            It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                          type: boolean\n                        proxyUrl:\n                          description: proxyUrl defines the HTTP proxy server to use.\n                          pattern: ^(http|https|socks5)://.+$\n                          type: string\n                        scopes:\n                          description: scopes defines the OAuth2 scopes used for the token request.\n                          items:\n                            type: string\n                          type: array\n                        tlsConfig:\n                          description: |-\n                            tlsConfig defines the TLS configuration to use when connecting to the OAuth2 server.\n                            It requires Prometheus >= v2.43.0.\n                          properties:\n                            ca:\n                              description: ca defines the Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            cert:\n                              description: cert defines the Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: configMap defines the ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: secret defines the Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      default: \"\"\n                                      description: |-\n                                        Name of the referent.\n                                        This field is effectively required, but due to backwards compatibility is\n                                        allowed to be empty. Instances of this type with an empty value here are\n                                        almost certainly wrong.\n                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            insecureSkipVerify:\n                              description: insecureSkipVerify defines how to disable target certificate validation.\n                              type: boolean\n                            keySecret:\n                              description: keySecret defines the Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            maxVersion:\n                              description: |-\n                                maxVersion defines the maximum acceptable TLS version.\n\n                                It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            minVersion:\n                              description: |-\n                                minVersion defines the minimum acceptable TLS version.\n\n                                It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                              enum:\n                              - TLS10\n                              - TLS11\n                              - TLS12\n                              - TLS13\n                              type: string\n                            serverName:\n                              description: serverName is used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                        tokenUrl:\n                          description: tokenUrl defines the URL to fetch the token from.\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyConnectHeader:\n                      additionalProperties:\n                        items:\n                          description: SecretKeySelector selects a key of a Secret.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type: array\n                      description: |-\n                        proxyConnectHeader optionally specifies headers to send to\n                        proxies during CONNECT requests.\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    proxyFromEnvironment:\n                      description: |-\n                        proxyFromEnvironment defines whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\n                        It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0.\n                      type: boolean\n                    proxyUrl:\n                      description: proxyUrl defines the HTTP proxy server to use.\n                      pattern: ^(http|https|socks5)://.+$\n                      type: string\n                    queueConfig:\n                      description: queueConfig allows tuning of the remote write queue parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: batchSendDeadline defines the maximum time a sample will wait in buffer.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        capacity:\n                          description: |-\n                            capacity defines the number of samples to buffer per shard before we start\n                            dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: maxBackoff defines the maximum retry delay.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        maxRetries:\n                          description: maxRetries defines the maximum number of times to retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: maxSamplesPerSend defines the maximum number of samples per send.\n                          type: integer\n                        maxShards:\n                          description: maxShards defines the maximum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: minBackoff defines the initial retry delay. Gets doubled for every retry.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        minShards:\n                          description: minShards defines the minimum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: |-\n                            retryOnRateLimit defines the retry upon receiving a 429 status code from the remote-write storage.\n\n                            This is an *experimental feature*, it may change in any upcoming release\n                            in a breaking way.\n                          type: boolean\n                        sampleAgeLimit:\n                          description: |-\n                            sampleAgeLimit drops samples older than the limit.\n                            It requires Prometheus >= v2.50.0 or Thanos >= v0.32.0.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    remoteTimeout:\n                      description: remoteTimeout defines the timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    roundRobinDNS:\n                      description: \"roundRobinDNS controls the DNS resolution behavior for remote-write connections.\\nWhen enabled:\\n  - The remote-write mechanism will resolve the hostname via DNS.\\n  - It will randomly select one of the resolved IP addresses and connect to it.\\n\\nWhen disabled (default behavior):\\n  - The Go standard library will handle hostname resolution.\\n  - It will attempt connections to each resolved IP address sequentially.\\n\\nNote: The connection timeout applies to the entire resolution and connection process.\\n\\n\\tIf disabled, the timeout is distributed across all connection attempts.\\n\\nIt requires Prometheus >= v3.1.0 or Thanos >= v0.38.0.\"\n                      type: boolean\n                    sendExemplars:\n                      description: |-\n                        sendExemplars enables sending of exemplars over remote write. Note that\n                        exemplar-storage itself must be enabled using the `spec.enableFeatures`\n                        option for exemplars to be scraped in the first place.\n\n                        It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0.\n                      type: boolean\n                    sendNativeHistograms:\n                      description: |-\n                        sendNativeHistograms enables sending of native histograms, also known as sparse histograms\n                        over remote write.\n\n                        It requires Prometheus >= v2.40.0 or Thanos >= v0.30.0.\n                      type: boolean\n                    sigv4:\n                      description: |-\n                        sigv4 defines the AWS's Signature Verification 4 for the URL.\n\n                        It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0.\n\n                        Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `azureAd`.\n                      properties:\n                        accessKey:\n                          description: |-\n                            accessKey defines the AWS API key. If not specified, the environment variable\n                            `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: profile defines the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: region defines the AWS region. If blank, the region from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: roleArn defines the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: |-\n                            secretKey defines the AWS API secret. If not specified, the environment\n                            variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        useFIPSSTSEndpoint:\n                          description: |-\n                            useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint.\n                            It requires Prometheus >= v2.54.0.\n                          type: boolean\n                      type: object\n                    tlsConfig:\n                      description: tlsConfig to use for the URL.\n                      properties:\n                        ca:\n                          description: ca defines the Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: caFile defines the path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: cert defines the Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: configMap defines the ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: secret defines the Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  default: \"\"\n                                  description: |-\n                                    Name of the referent.\n                                    This field is effectively required, but due to backwards compatibility is\n                                    allowed to be empty. Instances of this type with an empty value here are\n                                    almost certainly wrong.\n                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: certFile defines the path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: insecureSkipVerify defines how to disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: keyFile defines the path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: keySecret defines the Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        maxVersion:\n                          description: |-\n                            maxVersion defines the maximum acceptable TLS version.\n\n                            It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        minVersion:\n                          description: |-\n                            minVersion defines the minimum acceptable TLS version.\n\n                            It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0.\n                          enum:\n                          - TLS10\n                          - TLS11\n                          - TLS12\n                          - TLS13\n                          type: string\n                        serverName:\n                          description: serverName is used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: |-\n                        url defines the URL of the endpoint to send samples to.\n\n                        It must use the HTTP or HTTPS scheme.\n                      pattern: ^(http|https)://.+$\n                      type: string\n                    writeRelabelConfigs:\n                      description: writeRelabelConfigs defines the list of remote write relabel configurations.\n                      items:\n                        description: |-\n                          RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\n                          scraped samples and remote write samples.\n\n                          More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n                        properties:\n                          action:\n                            default: replace\n                            description: |-\n                              action to perform based on the regex matching.\n\n                              `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n                              `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n                              Default: \"Replace\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: |-\n                              modulus to take of the hash of the source label values.\n\n                              Only applicable when the action is `HashMod`.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: regex defines the regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: |-\n                              replacement value against which a Replace action is performed if the\n                              regular expression matches.\n\n                              Regex capture groups are available.\n                            type: string\n                          separator:\n                            description: separator defines the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: |-\n                              sourceLabels defines the source labels select values from existing labels. Their content is\n                              concatenated using the configured Separator and matched against the\n                              configured regular expression.\n                            items:\n                              description: |-\n                                LabelName is a valid Prometheus label name.\n                                For Prometheus 3.x, a label name is valid if it contains UTF-8 characters.\n                                For Prometheus 2.x, a label name is only valid if it contains ASCII characters, letters, numbers, as well as underscores.\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: |-\n                              targetLabel defines the label to which the resulting string is written in a replacement.\n\n                              It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n                              `KeepEqual` and `DropEqual` actions.\n\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              replicas:\n                description: replicas defines the number of thanos ruler instances to deploy.\n                format: int32\n                type: integer\n              resendDelay:\n                description: resendDelay defines the minimum amount of time to wait before resending an alert to Alertmanager.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              resources:\n                description: |-\n                  resources defines the resource requirements for single Pods.\n                  If not provided, no requests/limits will be set\n                properties:\n                  claims:\n                    description: |-\n                      Claims lists the names of resources, defined in spec.resourceClaims,\n                      that are used by this container.\n\n                      This field depends on the\n                      DynamicResourceAllocation feature gate.\n\n                      This field is immutable. It can only be set for containers.\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: |-\n                            Name must match the name of one entry in pod.spec.resourceClaims of\n                            the Pod where this field is used. It makes that resource available\n                            inside a container.\n                          type: string\n                        request:\n                          description: |-\n                            Request is the name chosen for a request in the referenced claim.\n                            If empty, everything from the claim is made available, otherwise\n                            only the result of this request.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Limits describes the maximum amount of compute resources allowed.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: |-\n                      Requests describes the minimum amount of compute resources required.\n                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                    type: object\n                type: object\n              retention:\n                default: 24h\n                description: |-\n                  retention defines the time duration ThanosRuler shall retain data for. Default is '24h', and\n                  must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds\n                  seconds minutes hours days weeks years).\n\n                  The field has no effect when remote-write is configured since the Ruler\n                  operates in stateless mode.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: routePrefix defines the route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.\n                type: string\n              ruleConcurrentEval:\n                description: |-\n                  ruleConcurrentEval defines how many rules can be evaluated concurrently.\n                  It requires Thanos >= v0.37.0.\n                format: int32\n                minimum: 1\n                type: integer\n              ruleGracePeriod:\n                description: |-\n                  ruleGracePeriod defines the minimum duration between alert and restored \"for\" state.\n                  This is maintained only for alerts with configured \"for\" time greater than grace period.\n                  It requires Thanos >= v0.30.0.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              ruleNamespaceSelector:\n                description: |-\n                  ruleNamespaceSelector defines the namespaces to be selected for Rules discovery. If unspecified, only\n                  the same namespace as the ThanosRuler object is in is used.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleOutageTolerance:\n                description: |-\n                  ruleOutageTolerance defines the max time to tolerate prometheus outage for restoring \"for\" state of alert.\n                  It requires Thanos >= v0.30.0.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              ruleQueryOffset:\n                description: |-\n                  ruleQueryOffset defines the default rule group's query offset duration to use.\n                  It requires Thanos >= v0.38.0.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              ruleSelector:\n                description: |-\n                  ruleSelector defines the PrometheusRule objects to be selected for rule evaluation. An empty\n                  label selector matches all objects. A null label selector matches no\n                  objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: |-\n                        A label selector requirement is a selector that contains values, a key, and an operator that\n                        relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: |-\n                            operator represents a key's relationship to a set of values.\n                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: |-\n                            values is an array of string values. If the operator is In or NotIn,\n                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                            the values array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: |-\n                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              schedulerName:\n                description: schedulerName defines the scheduler to use for Pod scheduling. If not specified, the default scheduler is used.\n                minLength: 1\n                type: string\n              securityContext:\n                description: |-\n                  securityContext defines the pod-level security attributes and common container settings.\n                  This defaults to the default PodSecurityContext.\n                properties:\n                  appArmorProfile:\n                    description: |-\n                      appArmorProfile is the AppArmor options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile loaded on the node that should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must match the loaded name of the profile.\n                          Must be set if and only if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of AppArmor profile will be applied.\n                          Valid options are:\n                            Localhost - a profile pre-loaded on the node.\n                            RuntimeDefault - the container runtime's default profile.\n                            Unconfined - no AppArmor enforcement.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  fsGroup:\n                    description: |-\n                      A special supplemental group that applies to all containers in a pod.\n                      Some volume types allow the Kubelet to change the ownership of that volume\n                      to be owned by the pod:\n\n                      1. The owning GID will be the FSGroup\n                      2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw----\n\n                      If unset, the Kubelet will not modify the ownership and permissions of any volume.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: |-\n                      fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\n                      before being exposed inside Pod. This field will only apply to\n                      volume types which support fsGroup based ownership(and permissions).\n                      It will have no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir.\n                      Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  runAsGroup:\n                    description: |-\n                      The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: |-\n                      Indicates that the container must run as a non-root user.\n                      If true, the Kubelet will validate the image at runtime to ensure that it\n                      does not run as UID 0 (root) and fail to start the container if it does.\n                      If unset or false, no such validation will be performed.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: |-\n                      The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext and\n                      PodSecurityContext, the value specified in SecurityContext takes precedence\n                      for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxChangePolicy:\n                    description: |-\n                      seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.\n                      It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.\n                      Valid values are \"MountOption\" and \"Recursive\".\n\n                      \"Recursive\" means relabeling of all files on all Pod volumes by the container runtime.\n                      This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.\n\n                      \"MountOption\" mounts all eligible Pod volumes with `-o context` mount option.\n                      This requires all Pods that share the same volume to use the same SELinux label.\n                      It is not possible to share the same volume among privileged and unprivileged Pods.\n                      Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes\n                      whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their\n                      CSIDriver instance. Other volumes are always re-labelled recursively.\n                      \"MountOption\" value is allowed only when SELinuxMount feature gate is enabled.\n\n                      If not specified and SELinuxMount feature gate is enabled, \"MountOption\" is used.\n                      If not specified and SELinuxMount feature gate is disabled, \"MountOption\" is used for ReadWriteOncePod volumes\n                      and \"Recursive\" for all other volumes.\n\n                      This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.\n\n                      All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  seLinuxOptions:\n                    description: |-\n                      The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random SELinux context for each\n                      container.  May also be set in SecurityContext.  If set in\n                      both SecurityContext and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: |-\n                      The seccomp options to use by the containers in this pod.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: |-\n                          localhostProfile indicates a profile defined in a file on the node should be used.\n                          The profile must be preconfigured on the node to work.\n                          Must be a descending path, relative to the kubelet's configured seccomp profile location.\n                          Must be set if type is \"Localhost\". Must NOT be set for any other type.\n                        type: string\n                      type:\n                        description: |-\n                          type indicates which kind of seccomp profile will be applied.\n                          Valid options are:\n\n                          Localhost - a profile defined in a file on the node should be used.\n                          RuntimeDefault - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: |-\n                      A list of groups applied to the first process run in each container, in\n                      addition to the container's primary GID and fsGroup (if specified).  If\n                      the SupplementalGroupsPolicy feature is enabled, the\n                      supplementalGroupsPolicy field determines whether these are in addition\n                      to or instead of any group memberships defined in the container image.\n                      If unspecified, no additional groups are added, though group memberships\n                      defined in the container image may still be used, depending on the\n                      supplementalGroupsPolicy field.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  supplementalGroupsPolicy:\n                    description: |-\n                      Defines how supplemental groups of the first container processes are calculated.\n                      Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used.\n                      (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled\n                      and the container runtime must implement support for this feature.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    type: string\n                  sysctls:\n                    description: |-\n                      Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\n                      sysctls (by the container runtime) might fail to launch.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                    x-kubernetes-list-type: atomic\n                  windowsOptions:\n                    description: |-\n                      The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext will be used.\n                      If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                      Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: |-\n                          GMSACredentialSpec is where the GMSA admission webhook\n                          (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\n                          GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: |-\n                          HostProcess determines if a container should be run as a 'Host Process' container.\n                          All of a Pod's containers must have the same effective HostProcess value\n                          (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\n                          In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: |-\n                          The UserName in Windows to run the entrypoint of the container process.\n                          Defaults to the user specified in image metadata if unspecified.\n                          May also be set in PodSecurityContext. If set in both SecurityContext and\n                          PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: |-\n                  serviceAccountName defines the name of the ServiceAccount to use to run the\n                  Thanos Ruler Pods.\n                type: string\n              serviceName:\n                description: |-\n                  serviceName defines the name of the service name used by the underlying StatefulSet(s) as the governing service.\n                  If defined, the Service  must be created before the ThanosRuler resource in the same namespace and it must define a selector that matches the pod labels.\n                  If empty, the operator will create and manage a headless service named `thanos-ruler-operated` for ThanosRuler resources.\n                  When deploying multiple ThanosRuler resources in the same namespace, it is recommended to specify a different value for each.\n                  See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id for more details.\n                minLength: 1\n                type: string\n              storage:\n                description: storage defines the specification of how storage shall be used.\n                properties:\n                  disableMountSubPath:\n                    description: 'disableMountSubPath deprecated: subPath usage will be removed in a future release.'\n                    type: boolean\n                  emptyDir:\n                    description: |-\n                      emptyDir to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir\n                    properties:\n                      medium:\n                        description: |-\n                          medium represents what type of storage medium should back this directory.\n                          The default is \"\" which means to use the node's default medium.\n                          Must be an empty string (default) or Memory.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                          The size limit is also applicable for memory medium.\n                          The maximum usage on memory medium EmptyDir would be the minimum value between\n                          the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                          The default is nil which means that the limit is undefined.\n                          More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: |-\n                      ephemeral to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15.\n                      For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate.\n                      More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes\n                    properties:\n                      volumeClaimTemplate:\n                        description: |-\n                          Will be used to create a stand-alone PVC to provision the volume.\n                          The pod in which this EphemeralVolumeSource is embedded will be the\n                          owner of the PVC, i.e. the PVC will be deleted together with the\n                          pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                          `<volume name>` is the name from the `PodSpec.Volumes` array\n                          entry. Pod validation will reject the pod if the concatenated name\n                          is not valid for a PVC (for example, too long).\n\n                          An existing PVC with that name that is not owned by the pod\n                          will *not* be used for the pod to avoid using an unrelated\n                          volume by mistake. Starting the pod is then blocked until\n                          the unrelated PVC is removed. If such a pre-created PVC is\n                          meant to be used by the pod, the PVC has to updated with an\n                          owner reference to the pod once the pod exists. Normally\n                          this should not be necessary, but it may be useful when\n                          manually reconstructing a broken cluster.\n\n                          This field is read-only and no changes will be made by Kubernetes\n                          to the PVC after it has been created.\n\n                          Required, must not be nil.\n                        properties:\n                          metadata:\n                            description: |-\n                              May contain labels and annotations that will be copied into the PVC\n                              when creating it. No other fields are allowed and will be rejected during\n                              validation.\n                            type: object\n                          spec:\n                            description: |-\n                              The specification for the PersistentVolumeClaim. The entire content is\n                              copied unchanged into the PVC that gets created from this\n                              template. The same fields as in a PersistentVolumeClaim\n                              are also valid here.\n                            properties:\n                              accessModes:\n                                description: |-\n                                  accessModes contains the desired access modes the volume should have.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              dataSource:\n                                description: |-\n                                  dataSource field can be used to specify either:\n                                  * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim)\n                                  If the provisioner or an external controller can support the specified data source,\n                                  it will create a new volume based on the contents of the specified data source.\n                                  When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                  and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                  If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: |-\n                                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a non-empty API group (non\n                                  core object) or a PersistentVolumeClaim object.\n                                  When this field is specified, volume binding will only succeed if the type of\n                                  the specified object matches some installed volume populator or dynamic\n                                  provisioner.\n                                  This field will replace the functionality of the dataSource field and as such\n                                  if both fields are non-empty, they must have the same value. For backwards\n                                  compatibility, when namespace isn't specified in dataSourceRef,\n                                  both fields (dataSource and dataSourceRef) will be set to the same\n                                  value automatically if one of them is empty and the other is non-empty.\n                                  When namespace is specified in dataSourceRef,\n                                  dataSource isn't set to the same value and must be empty.\n                                  There are three important differences between dataSource and dataSourceRef:\n                                  * While dataSource only allows two specific types of objects, dataSourceRef\n                                    allows any non-core object, as well as PersistentVolumeClaim objects.\n                                  * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                    preserves all values, and generates an error if a disallowed value is\n                                    specified.\n                                  * While dataSource only allows local objects, dataSourceRef allows objects\n                                    in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                  (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                properties:\n                                  apiGroup:\n                                    description: |-\n                                      APIGroup is the group for the resource being referenced.\n                                      If APIGroup is not specified, the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: |-\n                                      Namespace is the namespace of resource being referenced\n                                      Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                      (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: |-\n                                  resources represents the minimum resources the volume should have.\n                                  Users are allowed to specify resource requirements\n                                  that are lower than previous value but must still be higher than capacity recorded in the\n                                  status field of the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                properties:\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Limits describes the maximum amount of compute resources allowed.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: |-\n                                      Requests describes the minimum amount of compute resources required.\n                                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                      otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: |-\n                                        A label selector requirement is a selector that contains values, a key, and an operator that\n                                        relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: |-\n                                            operator represents a key's relationship to a set of values.\n                                            Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: |-\n                                            values is an array of string values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array is replaced during a strategic\n                                            merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                      operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: |-\n                                  storageClassName is the name of the StorageClass required by the claim.\n                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                type: string\n                              volumeAttributesClassName:\n                                description: |-\n                                  volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                  If specified, the CSI driver will create or update the volume with the attributes defined\n                                  in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                  it can be changed after the claim is created. An empty string or nil value indicates that no\n                                  VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                  this field can be reset to its previous value (including nil) to cancel the modification.\n                                  If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                  set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                  exists.\n                                  More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                type: string\n                              volumeMode:\n                                description: |-\n                                  volumeMode defines what type of volume is required by the claim.\n                                  Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: |-\n                      volumeClaimTemplate defines the PVC spec to be used by the Prometheus StatefulSets.\n                      The easiest way to use a volume that cannot be automatically provisioned\n                      is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: |-\n                          APIVersion defines the versioned schema of this representation of an object.\n                          Servers should convert recognized schemas to the latest internal value, and\n                          may reject unrecognized values.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n                        type: string\n                      kind:\n                        description: |-\n                          Kind is a string value representing the REST resource this object represents.\n                          Servers may infer this from the endpoint the client submits requests to.\n                          Cannot be updated.\n                          In CamelCase.\n                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n                        type: string\n                      metadata:\n                        description: metadata defines EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              annotations defines an unstructured key value map stored with a resource that may be\n                              set by external tools to store and retrieve arbitrary metadata. They are not\n                              queryable and should be preserved when modifying objects.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: |-\n                              labels define the map of string keys and values that can be used to organize and categorize\n                              (scope and select) objects. May match selectors of replication controllers\n                              and services.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n                            type: object\n                          name:\n                            description: |-\n                              name must be unique within a namespace. Is required when creating resources, although\n                              some resources may allow a client to request the generation of an appropriate name\n                              automatically. Name is primarily intended for creation idempotence and configuration\n                              definition.\n                              Cannot be updated.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/\n                            type: string\n                        type: object\n                      spec:\n                        description: |-\n                          spec defines the specification of the  characteristics of a volume requested by a pod author.\n                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the desired access modes the volume should have.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          dataSource:\n                            description: |-\n                              dataSource field can be used to specify either:\n                              * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim)\n                              If the provisioner or an external controller can support the specified data source,\n                              it will create a new volume based on the contents of the specified data source.\n                              When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                              and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                              If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: |-\n                              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty API group (non\n                              core object) or a PersistentVolumeClaim object.\n                              When this field is specified, volume binding will only succeed if the type of\n                              the specified object matches some installed volume populator or dynamic\n                              provisioner.\n                              This field will replace the functionality of the dataSource field and as such\n                              if both fields are non-empty, they must have the same value. For backwards\n                              compatibility, when namespace isn't specified in dataSourceRef,\n                              both fields (dataSource and dataSourceRef) will be set to the same\n                              value automatically if one of them is empty and the other is non-empty.\n                              When namespace is specified in dataSourceRef,\n                              dataSource isn't set to the same value and must be empty.\n                              There are three important differences between dataSource and dataSourceRef:\n                              * While dataSource only allows two specific types of objects, dataSourceRef\n                                allows any non-core object, as well as PersistentVolumeClaim objects.\n                              * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                preserves all values, and generates an error if a disallowed value is\n                                specified.\n                              * While dataSource only allows local objects, dataSourceRef allows objects\n                                in any namespaces.\n                              (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                              (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                            properties:\n                              apiGroup:\n                                description: |-\n                                  APIGroup is the group for the resource being referenced.\n                                  If APIGroup is not specified, the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: |-\n                                  Namespace is the namespace of resource being referenced\n                                  Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                  (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: |-\n                              resources represents the minimum resources the volume should have.\n                              Users are allowed to specify resource requirements\n                              that are lower than previous value but must still be higher than capacity recorded in the\n                              status field of the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                            properties:\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Limits describes the maximum amount of compute resources allowed.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: |-\n                                  Requests describes the minimum amount of compute resources required.\n                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: |-\n                                    A label selector requirement is a selector that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: |-\n                                        operator represents a key's relationship to a set of values.\n                                        Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: |-\n                                        values is an array of string values. If the operator is In or NotIn,\n                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                        the values array must be empty. This array is replaced during a strategic\n                                        merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                                x-kubernetes-list-type: atomic\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: |-\n                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                  map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                  operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: |-\n                              storageClassName is the name of the StorageClass required by the claim.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                            type: string\n                          volumeAttributesClassName:\n                            description: |-\n                              volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                              If specified, the CSI driver will create or update the volume with the attributes defined\n                              in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                              it can be changed after the claim is created. An empty string or nil value indicates that no\n                              VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                              this field can be reset to its previous value (including nil) to cancel the modification.\n                              If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                              set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                              exists.\n                              More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                            type: string\n                          volumeMode:\n                            description: |-\n                              volumeMode defines what type of volume is required by the claim.\n                              Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: 'status is deprecated: this field is never set.'\n                        properties:\n                          accessModes:\n                            description: |-\n                              accessModes contains the actual access modes the volume backing the PVC has.\n                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                            items:\n                              type: string\n                            type: array\n                            x-kubernetes-list-type: atomic\n                          allocatedResourceStatuses:\n                            additionalProperties:\n                              description: |-\n                                When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\n                                that it does not recognizes, then it should ignore that update and let other controllers\n                                handle it.\n                              type: string\n                            description: \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                            x-kubernetes-map-type: granular\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\"\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: |-\n                              conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'Resizing'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: |-\n                                    reason is a unique, this should be a short, machine understandable string that gives the reason\n                                    for condition's last transition. If it reports \"Resizing\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  description: |-\n                                    Status is the status of the condition.\n                                    Can be True, False, Unknown.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required\n                                  type: string\n                                type:\n                                  description: |-\n                                    Type is the type of the condition.\n                                    More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                            x-kubernetes-list-map-keys:\n                            - type\n                            x-kubernetes-list-type: map\n                          currentVolumeAttributesClassName:\n                            description: |-\n                              currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\n                              When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\n                            type: string\n                          modifyVolumeStatus:\n                            description: |-\n                              ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\n                              When this is unset, there is no ModifyVolume operation being attempted.\n                            properties:\n                              status:\n                                description: \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n   Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n   the specified VolumeAttributesClass not existing.\\n - InProgress\\n   InProgress indicates that the volume is being modified.\\n - Infeasible\\n  Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t  resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\"\n                                type: string\n                              targetVolumeAttributesClassName:\n                                description: targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\n                                type: string\n                            required:\n                            - status\n                            type: object\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              terminationGracePeriodSeconds:\n                description: |-\n                  terminationGracePeriodSeconds defines the optional duration in seconds the pod needs to terminate gracefully.\n                  Value must be non-negative integer. The value zero indicates stop immediately via\n                  the kill signal (no opportunity to shut down) which may lead to data corruption.\n\n                  Defaults to 120 seconds.\n                format: int64\n                minimum: 0\n                type: integer\n              tolerations:\n                description: tolerations defines when specified, the pod's tolerations.\n                items:\n                  description: |-\n                    The pod this Toleration is attached to tolerates any taint that matches\n                    the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: |-\n                        Effect indicates the taint effect to match. Empty means match all taint effects.\n                        When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: |-\n                        Key is the taint key that the toleration applies to. Empty means match all taint keys.\n                        If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: |-\n                        Operator represents a key's relationship to the value.\n                        Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod can\n                        tolerate all taints of a particular category.\n                        Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).\n                      type: string\n                    tolerationSeconds:\n                      description: |-\n                        TolerationSeconds represents the period of time the toleration (which must be\n                        of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\n                        it is not set, which means tolerate the taint forever (do not evict). Zero and\n                        negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: |-\n                        Value is the taint value the toleration matches to.\n                        If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: topologySpreadConstraints defines the pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: |-\n                        LabelSelector is used to find matching pods.\n                        Pods that match this label selector are counted to determine the number of pods\n                        in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: |-\n                              A label selector requirement is a selector that contains values, a key, and an operator that\n                              relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: |-\n                                  operator represents a key's relationship to a set of values.\n                                  Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: |-\n                                  values is an array of string values. If the operator is In or NotIn,\n                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                  the values array must be empty. This array is replaced during a strategic\n                                  merge patch.\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                            map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                            operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: |-\n                        MatchLabelKeys is a set of pod label keys to select the pods over which\n                        spreading will be calculated. The keys are used to lookup values from the\n                        incoming pod labels, those key-value labels are ANDed with labelSelector\n                        to select the group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\n                        MatchLabelKeys cannot be set when LabelSelector isn't set.\n                        Keys that don't exist in the incoming pod labels will\n                        be ignored. A null or empty list means only match against labelSelector.\n\n                        This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: |-\n                        MaxSkew describes the degree to which pods may be unevenly distributed.\n                        When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\n                        between the number of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods in an eligible domain\n                        or zero if the number of eligible domains is less than MinDomains.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 2/2/1:\n                        In this case, the global minimum is 1.\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |   P   |\n                        - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\n                        scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\n                        violate MaxSkew(1).\n                        - if MaxSkew is 2, incoming pod can be scheduled onto any zone.\n                        When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\n                        to topologies that satisfy it.\n                        It's a required field. Default value is 1 and 0 is not allowed.\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: |-\n                        MinDomains indicates a minimum number of eligible domains.\n                        When the number of eligible domains with matching topology keys is less than minDomains,\n                        Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed.\n                        And when the number of eligible domains with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling.\n                        As a result, when the number of eligible domains is less than minDomains,\n                        scheduler won't schedule more than maxSkew Pods to those domains.\n                        If value is nil, the constraint behaves as if MinDomains is equal to 1.\n                        Valid values are integers greater than 0.\n                        When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\n                        For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\n                        labelSelector spread as 2/2/2:\n                        | zone1 | zone2 | zone3 |\n                        |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0.\n                        In this situation, new pod with the same labelSelector cannot be scheduled,\n                        because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\n                        it will violate MaxSkew.\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: |-\n                        NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\n                        when calculating pod topology spread skew. Options are:\n                        - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\n                        - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\n                        If this value is nil, the behavior is equivalent to the Honor policy.\n                      type: string\n                    nodeTaintsPolicy:\n                      description: |-\n                        NodeTaintsPolicy indicates how we will treat node taints when calculating\n                        pod topology spread skew. Options are:\n                        - Honor: nodes without taints, along with tainted nodes for which the incoming pod\n                        has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n\n                        If this value is nil, the behavior is equivalent to the Ignore policy.\n                      type: string\n                    topologyKey:\n                      description: |-\n                        TopologyKey is the key of node labels. Nodes that have a label with this key\n                        and identical values are considered to be in the same topology.\n                        We consider each <key, value> as a \"bucket\", and try to put balanced number\n                        of pods into each bucket.\n                        We define a domain as a particular instance of a topology.\n                        Also, we define an eligible domain as a domain whose nodes meet the requirements of\n                        nodeAffinityPolicy and nodeTaintsPolicy.\n                        e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology.\n                        And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology.\n                        It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: |-\n                        WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\n                        the spread constraint.\n                        - DoNotSchedule (default) tells the scheduler not to schedule it.\n                        - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n                          but giving higher precedence to topologies that would help reduce the\n                          skew.\n                        A constraint is considered \"Unsatisfiable\" for an incoming pod\n                        if and only if every possible node assignment for that pod would violate\n                        \"MaxSkew\" on some topology.\n                        For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\n                        labelSelector spread as 3/1/1:\n                        | zone1 | zone2 | zone3 |\n                        | P P P |   P   |   P   |\n                        If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\n                        to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\n                        MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\n                        won't make it *more* imbalanced.\n                        It's a required field.\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: |-\n                  tracingConfig defines the tracing configuration.\n\n                  The configuration format is defined at https://thanos.io/tip/thanos/tracing.md/#configuration\n\n                  This is an *experimental feature*, it may change in any upcoming release\n                  in a breaking way.\n\n                  The operator performs no validation of the configuration.\n\n                  `tracingConfigFile` takes precedence over this field.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    default: \"\"\n                    description: |-\n                      Name of the referent.\n                      This field is effectively required, but due to backwards compatibility is\n                      allowed to be empty. Instances of this type with an empty value here are\n                      almost certainly wrong.\n                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              tracingConfigFile:\n                description: |-\n                  tracingConfigFile defines the path of the tracing configuration file.\n\n                  The configuration format is defined at https://thanos.io/tip/thanos/tracing.md/#configuration\n\n                  This is an *experimental feature*, it may change in any upcoming release\n                  in a breaking way.\n\n                  The operator performs no validation of the configuration file.\n\n                  This field takes precedence over `tracingConfig`.\n                type: string\n              updateStrategy:\n                description: |-\n                  updateStrategy indicates the strategy that will be employed to update\n                  Pods in the StatefulSet when a revision is made to statefulset's Pod\n                  Template.\n\n                  The default strategy is RollingUpdate.\n                properties:\n                  rollingUpdate:\n                    description: rollingUpdate is used to communicate parameters when type is RollingUpdate.\n                    properties:\n                      maxUnavailable:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: |-\n                          maxUnavailable is the maximum number of pods that can be unavailable\n                          during the update. The value can be an absolute number (ex: 5) or a\n                          percentage of desired pods (ex: 10%). Absolute number is calculated from\n                          percentage by rounding up. This can not be 0.  Defaults to 1. This field\n                          is alpha-level and is only honored by servers that enable the\n                          MaxUnavailableStatefulSet feature. The field applies to all pods in the\n                          range 0 to Replicas-1.  That means if there is any unavailable pod in\n                          the range 0 to Replicas-1, it will be counted towards MaxUnavailable.\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  type:\n                    description: |-\n                      type indicates the type of the StatefulSetUpdateStrategy.\n\n                      Default is RollingUpdate.\n                    enum:\n                    - OnDelete\n                    - RollingUpdate\n                    type: string\n                required:\n                - type\n                type: object\n                x-kubernetes-validations:\n                - message: rollingUpdate requires type to be RollingUpdate\n                  rule: '!(self.type != ''RollingUpdate'' && has(self.rollingUpdate))'\n              version:\n                description: version of Thanos to be deployed.\n                type: string\n              volumeMounts:\n                description: |-\n                  volumeMounts defines how the configuration of additional VolumeMounts on the output StatefulSet definition.\n                  VolumeMounts specified will be appended to other VolumeMounts in the ruler container,\n                  that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: |-\n                        Path within the container at which the volume should be mounted.  Must\n                        not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: |-\n                        mountPropagation determines how mounts are propagated from the host\n                        to container and the other way around.\n                        When not set, MountPropagationNone is used.\n                        This field is beta in 1.10.\n                        When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n                        (which defaults to None).\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: |-\n                        Mounted read-only if true, read-write otherwise (false or unspecified).\n                        Defaults to false.\n                      type: boolean\n                    recursiveReadOnly:\n                      description: |-\n                        RecursiveReadOnly specifies whether read-only mounts should be handled\n                        recursively.\n\n                        If ReadOnly is false, this field has no meaning and must be unspecified.\n\n                        If ReadOnly is true, and this field is set to Disabled, the mount is not made\n                        recursively read-only.  If this field is set to IfPossible, the mount is made\n                        recursively read-only, if it is supported by the container runtime.  If this\n                        field is set to Enabled, the mount is made recursively read-only if it is\n                        supported by the container runtime, otherwise the pod will not be started and\n                        an error will be generated to indicate the reason.\n\n                        If this field is set to IfPossible or Enabled, MountPropagation must be set to\n                        None (or be unspecified, which defaults to None).\n\n                        If this field is not specified, it is treated as an equivalent of Disabled.\n                      type: string\n                    subPath:\n                      description: |-\n                        Path within the volume from which the container's volume should be mounted.\n                        Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: |-\n                        Expanded path within the volume from which the container's volume should be mounted.\n                        Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\n                        Defaults to \"\" (volume's root).\n                        SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: |-\n                  volumes defines how configuration of additional volumes on the output StatefulSet definition. Volumes specified will\n                  be appended to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: |-\n                        awsElasticBlockStore represents an AWS Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree\n                        awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly value true will force the readOnly setting in VolumeMounts.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: boolean\n                        volumeID:\n                          description: |-\n                            volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: |-\n                        azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                        Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type\n                        are redirected to the disk.csi.azure.com CSI driver.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          default: ext4\n                          description: |-\n                            fsType is Filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          default: false\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: |-\n                        azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                        Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type\n                        are redirected to the file.csi.azure.com CSI driver.\n                      properties:\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: |-\n                        cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.\n                        Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.\n                      properties:\n                        monitors:\n                          description: |-\n                            monitors is Required: Monitors is a collection of Ceph monitors\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: boolean\n                        secretFile:\n                          description: |-\n                            secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: |-\n                            user is optional: User is the rados user name, default is admin\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: |-\n                        cinder represents a cinder volume attached and mounted on kubelets host machine.\n                        Deprecated: Cinder is deprecated. All operations for the in-tree cinder type\n                        are redirected to the cinder.csi.openstack.org CSI driver.\n                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is optional: points to a secret object containing parameters used to connect\n                            to OpenStack.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: |-\n                            volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items if unspecified, each key-value pair in the Data field of the referenced\n                            ConfigMap will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the ConfigMap,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        name:\n                          default: \"\"\n                          description: |-\n                            Name of the referent.\n                            This field is effectively required, but due to backwards compatibility is\n                            allowed to be empty. Instances of this type with an empty value here are\n                            almost certainly wrong.\n                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers.\n                      properties:\n                        driver:\n                          description: |-\n                            driver is the name of the CSI driver that handles this volume.\n                            Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated CSI driver\n                            which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: |-\n                            nodePublishSecretRef is a reference to the secret object containing\n                            sensitive information to pass to the CSI driver to complete the CSI\n                            NodePublishVolume and NodeUnpublishVolume calls.\n                            This field is optional, and  may be empty if no secret is required. If the\n                            secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly specifies a read-only configuration for the volume.\n                            Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: |-\n                            volumeAttributes stores driver-specific properties that are passed to the CSI\n                            driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: |-\n                            Optional: mode bits to use on created files by default. Must be a\n                            Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: |-\n                                  Optional: mode bits used to set permissions on this file, must be an octal value\n                                  between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: |-\n                                  Selects a resource of the container: only resources limits and requests\n                                  (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    emptyDir:\n                      description: |-\n                        emptyDir represents a temporary directory that shares a pod's lifetime.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                      properties:\n                        medium:\n                          description: |-\n                            medium represents what type of storage medium should back this directory.\n                            The default is \"\" which means to use the node's default medium.\n                            Must be an empty string (default) or Memory.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: |-\n                            sizeLimit is the total amount of local storage required for this EmptyDir volume.\n                            The size limit is also applicable for memory medium.\n                            The maximum usage on memory medium EmptyDir would be the minimum value between\n                            the SizeLimit specified here and the sum of memory limits of all containers in a pod.\n                            The default is nil which means that the limit is undefined.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: |-\n                        ephemeral represents a volume that is handled by a cluster storage driver.\n                        The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\n                        and deleted when the pod is removed.\n\n                        Use this if:\n                        a) the volume is only needed while the pod runs,\n                        b) features of normal volumes like restoring from snapshot or capacity\n                           tracking are needed,\n                        c) the storage driver is specified through a storage class, and\n                        d) the storage driver supports dynamic volume provisioning through\n                           a PersistentVolumeClaim (see EphemeralVolumeSource for more\n                           information on the connection between this volume type\n                           and PersistentVolumeClaim).\n\n                        Use PersistentVolumeClaim or one of the vendor-specific\n                        APIs for volumes that persist for longer than the lifecycle\n                        of an individual pod.\n\n                        Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to\n                        be used that way - see the documentation of the driver for\n                        more information.\n\n                        A pod can use both types of ephemeral volumes and\n                        persistent volumes at the same time.\n                      properties:\n                        volumeClaimTemplate:\n                          description: |-\n                            Will be used to create a stand-alone PVC to provision the volume.\n                            The pod in which this EphemeralVolumeSource is embedded will be the\n                            owner of the PVC, i.e. the PVC will be deleted together with the\n                            pod.  The name of the PVC will be `<pod name>-<volume name>` where\n                            `<volume name>` is the name from the `PodSpec.Volumes` array\n                            entry. Pod validation will reject the pod if the concatenated name\n                            is not valid for a PVC (for example, too long).\n\n                            An existing PVC with that name that is not owned by the pod\n                            will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC is\n                            meant to be used by the pod, the PVC has to updated with an\n                            owner reference to the pod once the pod exists. Normally\n                            this should not be necessary, but it may be useful when\n                            manually reconstructing a broken cluster.\n\n                            This field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created.\n\n                            Required, must not be nil.\n                          properties:\n                            metadata:\n                              description: |-\n                                May contain labels and annotations that will be copied into the PVC\n                                when creating it. No other fields are allowed and will be rejected during\n                                validation.\n                              type: object\n                            spec:\n                              description: |-\n                                The specification for the PersistentVolumeClaim. The entire content is\n                                copied unchanged into the PVC that gets created from this\n                                template. The same fields as in a PersistentVolumeClaim\n                                are also valid here.\n                              properties:\n                                accessModes:\n                                  description: |-\n                                    accessModes contains the desired access modes the volume should have.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n                                  items:\n                                    type: string\n                                  type: array\n                                  x-kubernetes-list-type: atomic\n                                dataSource:\n                                  description: |-\n                                    dataSource field can be used to specify either:\n                                    * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim)\n                                    If the provisioner or an external controller can support the specified data source,\n                                    it will create a new volume based on the contents of the specified data source.\n                                    When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\n                                    and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\n                                    If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: |-\n                                    dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\n                                    volume is desired. This may be any object from a non-empty API group (non\n                                    core object) or a PersistentVolumeClaim object.\n                                    When this field is specified, volume binding will only succeed if the type of\n                                    the specified object matches some installed volume populator or dynamic\n                                    provisioner.\n                                    This field will replace the functionality of the dataSource field and as such\n                                    if both fields are non-empty, they must have the same value. For backwards\n                                    compatibility, when namespace isn't specified in dataSourceRef,\n                                    both fields (dataSource and dataSourceRef) will be set to the same\n                                    value automatically if one of them is empty and the other is non-empty.\n                                    When namespace is specified in dataSourceRef,\n                                    dataSource isn't set to the same value and must be empty.\n                                    There are three important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types of objects, dataSourceRef\n                                      allows any non-core object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping them), dataSourceRef\n                                      preserves all values, and generates an error if a disallowed value is\n                                      specified.\n                                    * While dataSource only allows local objects, dataSourceRef allows objects\n                                      in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n                                    (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                  properties:\n                                    apiGroup:\n                                      description: |-\n                                        APIGroup is the group for the resource being referenced.\n                                        If APIGroup is not specified, the specified Kind must be in the core API group.\n                                        For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: |-\n                                        Namespace is the namespace of resource being referenced\n                                        Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n                                        (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: |-\n                                    resources represents the minimum resources the volume should have.\n                                    Users are allowed to specify resource requirements\n                                    that are lower than previous value but must still be higher than capacity recorded in the\n                                    status field of the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n                                  properties:\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Limits describes the maximum amount of compute resources allowed.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: |-\n                                        Requests describes the minimum amount of compute resources required.\n                                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\n                                        otherwise to an implementation-defined value. Requests cannot exceed Limits.\n                                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: |-\n                                          A label selector requirement is a selector that contains values, a key, and an operator that\n                                          relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: |-\n                                              operator represents a key's relationship to a set of values.\n                                              Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: |-\n                                              values is an array of string values. If the operator is In or NotIn,\n                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                            x-kubernetes-list-type: atomic\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-type: atomic\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: |-\n                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                        operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: |-\n                                    storageClassName is the name of the StorageClass required by the claim.\n                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n                                  type: string\n                                volumeAttributesClassName:\n                                  description: |-\n                                    volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\n                                    If specified, the CSI driver will create or update the volume with the attributes defined\n                                    in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\n                                    it can be changed after the claim is created. An empty string or nil value indicates that no\n                                    VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,\n                                    this field can be reset to its previous value (including nil) to cancel the modification.\n                                    If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\n                                    set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\n                                    exists.\n                                    More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n                                  type: string\n                                volumeMode:\n                                  description: |-\n                                    volumeMode defines what type of volume is required by the claim.\n                                    Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        wwids:\n                          description: |-\n                            wwids Optional: FC volume world wide identifiers (wwids)\n                            Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    flexVolume:\n                      description: |-\n                        flexVolume represents a generic volume resource that is\n                        provisioned/attached using an exec based plugin.\n                        Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: |-\n                            readOnly is Optional: defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is Optional: secretRef is reference to the secret object containing\n                            sensitive information to pass to the plugin scripts. This may be\n                            empty if no secret object is specified. If the secret object\n                            contains more than one secret, all secrets are passed to the plugin\n                            scripts.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: |-\n                        flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.\n                        Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.\n                      properties:\n                        datasetName:\n                          description: |-\n                            datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker\n                            should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: |-\n                        gcePersistentDisk represents a GCE Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree\n                        gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        partition:\n                          description: |-\n                            partition is the partition in the volume that you want to mount.\n                            If omitted, the default is to mount by volume name.\n                            Examples: For volume /dev/sda1, you specify the partition as \"1\".\n                            Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: |-\n                            pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: |-\n                        gitRepo represents a git repository at a particular revision.\n                        Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an\n                        EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\n                        into the Pod's container.\n                      properties:\n                        directory:\n                          description: |-\n                            directory is the target directory name.\n                            Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the\n                            git repository.  Otherwise, if specified, the volume will contain the git repository in\n                            the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: |-\n                        glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\n                        Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.\n                      properties:\n                        endpoints:\n                          description: endpoints is the endpoint name that details Glusterfs topology.\n                          type: string\n                        path:\n                          description: |-\n                            path is the Glusterfs volume path.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: |-\n                        hostPath represents a pre-existing file or directory on the host\n                        machine that is directly exposed to the container. This is generally\n                        used for system agents or other privileged things that are allowed\n                        to see the host machine. Most containers will NOT need this.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                      properties:\n                        path:\n                          description: |-\n                            path of the directory on the host.\n                            If the path is a symlink, it will follow the link to the real path.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                        type:\n                          description: |-\n                            type for HostPath Volume\n                            Defaults to \"\"\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    image:\n                      description: |-\n                        image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.\n                        The volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n                        - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                        - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                        - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\n                        The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.\n                        A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.\n                        The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.\n                        The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.\n                        The volume will be mounted read-only (ro) and non-executable files (noexec).\n                        Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.\n                        The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.\n                      properties:\n                        pullPolicy:\n                          description: |-\n                            Policy for pulling OCI objects. Possible values are:\n                            Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n                            Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n                            IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n                            Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n                          type: string\n                        reference:\n                          description: |-\n                            Required: Image or artifact reference to be used.\n                            Behaves in the same way as pod.spec.containers[*].image.\n                            Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.\n                            More info: https://kubernetes.io/docs/concepts/containers/images\n                            This field is optional to allow higher level config management to default or override\n                            container images in workload controllers like Deployments and StatefulSets.\n                          type: string\n                      type: object\n                    iscsi:\n                      description: |-\n                        iscsi represents an ISCSI Disk resource that is attached to a\n                        kubelet's host machine and then exposed to the pod.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                          type: string\n                        initiatorName:\n                          description: |-\n                            initiatorName is the custom iSCSI Initiator Name.\n                            If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n                            <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          default: default\n                          description: |-\n                            iscsiInterface is the interface Name that uses an iSCSI transport.\n                            Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: |-\n                            portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: |-\n                            targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\n                            is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: |-\n                        name of the volume.\n                        Must be a DNS_LABEL and unique within the pod.\n                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      type: string\n                    nfs:\n                      description: |-\n                        nfs represents an NFS mount on the host that shares a pod's lifetime\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                      properties:\n                        path:\n                          description: |-\n                            path that is exported by the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the NFS export to be mounted with read-only permissions.\n                            Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: boolean\n                        server:\n                          description: |-\n                            server is the hostname or IP address of the NFS server.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: |-\n                        persistentVolumeClaimVolumeSource represents a reference to a\n                        PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                      properties:\n                        claimName:\n                          description: |-\n                            claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\n                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Will force the ReadOnly setting in VolumeMounts.\n                            Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: |-\n                        photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.\n                        Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: |-\n                        portworxVolume represents a portworx volume attached and mounted on kubelets host machine.\n                        Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type\n                        are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate\n                        is on.\n                      properties:\n                        fsType:\n                          description: |-\n                            fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode are the mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: |-\n                            sources is the list of volume projections. Each entry in this list\n                            handles one source.\n                          items:\n                            description: |-\n                              Projection that may be projected along with other supported volume types.\n                              Exactly one of these fields must be set.\n                            properties:\n                              clusterTrustBundle:\n                                description: |-\n                                  ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\n                                  of ClusterTrustBundle objects in an auto-updating file.\n\n                                  Alpha, gated by the ClusterTrustBundleProjection feature gate.\n\n                                  ClusterTrustBundle objects can either be selected by name, or by the\n                                  combination of signer name and a label selector.\n\n                                  Kubelet performs aggressive normalization of the PEM contents written\n                                  into the pod filesystem.  Esoteric PEM features such as inter-block\n                                  comments and block headers are stripped.  Certificates are deduplicated.\n                                  The ordering of certificates within the file is arbitrary, and Kubelet\n                                  may change the order over time.\n                                properties:\n                                  labelSelector:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this label selector.  Only has\n                                      effect if signerName is set.  Mutually-exclusive with name.  If unset,\n                                      interpreted as \"match nothing\".  If set but empty, interpreted as \"match\n                                      everything\".\n                                    properties:\n                                      matchExpressions:\n                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                        items:\n                                          description: |-\n                                            A label selector requirement is a selector that contains values, a key, and an operator that\n                                            relates the key and values.\n                                          properties:\n                                            key:\n                                              description: key is the label key that the selector applies to.\n                                              type: string\n                                            operator:\n                                              description: |-\n                                                operator represents a key's relationship to a set of values.\n                                                Valid operators are In, NotIn, Exists and DoesNotExist.\n                                              type: string\n                                            values:\n                                              description: |-\n                                                values is an array of string values. If the operator is In or NotIn,\n                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,\n                                                the values array must be empty. This array is replaced during a strategic\n                                                merge patch.\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        description: |-\n                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\n                                          map is equivalent to an element of matchExpressions, whose key field is \"key\", the\n                                          operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  name:\n                                    description: |-\n                                      Select a single ClusterTrustBundle by object name.  Mutually-exclusive\n                                      with signerName and labelSelector.\n                                    type: string\n                                  optional:\n                                    description: |-\n                                      If true, don't block pod startup if the referenced ClusterTrustBundle(s)\n                                      aren't available.  If using name, then the named ClusterTrustBundle is\n                                      allowed not to exist.  If using signerName, then the combination of\n                                      signerName and labelSelector is allowed to match zero\n                                      ClusterTrustBundles.\n                                    type: boolean\n                                  path:\n                                    description: Relative path from the volume root to write the bundle.\n                                    type: string\n                                  signerName:\n                                    description: |-\n                                      Select all ClusterTrustBundles that match this signer name.\n                                      Mutually-exclusive with name.  The contents of all selected\n                                      ClusterTrustBundles will be unified and deduplicated.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      ConfigMap will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the ConfigMap,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: |-\n                                            Optional: mode bits used to set permissions on this file, must be an octal value\n                                            between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: |-\n                                            Selects a resource of the container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                type: object\n                              podCertificate:\n                                description: |-\n                                  Projects an auto-rotating credential bundle (private key and certificate\n                                  chain) that the pod can use either as a TLS client or server.\n\n                                  Kubelet generates a private key and uses it to send a\n                                  PodCertificateRequest to the named signer.  Once the signer approves the\n                                  request and issues a certificate chain, Kubelet writes the key and\n                                  certificate chain to the pod filesystem.  The pod does not start until\n                                  certificates have been issued for each podCertificate projected volume\n                                  source in its spec.\n\n                                  Kubelet will begin trying to rotate the certificate at the time indicated\n                                  by the signer using the PodCertificateRequest.Status.BeginRefreshAt\n                                  timestamp.\n\n                                  Kubelet can write a single file, indicated by the credentialBundlePath\n                                  field, or separate files, indicated by the keyPath and\n                                  certificateChainPath fields.\n\n                                  The credential bundle is a single file in PEM format.  The first PEM\n                                  entry is the private key (in PKCS#8 format), and the remaining PEM\n                                  entries are the certificate chain issued by the signer (typically,\n                                  signers will return their certificate chain in leaf-to-root order).\n\n                                  Prefer using the credential bundle format, since your application code\n                                  can read it atomically.  If you use keyPath and certificateChainPath,\n                                  your application must make two separate file reads. If these coincide\n                                  with a certificate rotation, it is possible that the private key and leaf\n                                  certificate you read may not correspond to each other.  Your application\n                                  will need to check for this condition, and re-read until they are\n                                  consistent.\n\n                                  The named signer controls chooses the format of the certificate it\n                                  issues; consult the signer implementation's documentation to learn how to\n                                  use the certificates it issues.\n                                properties:\n                                  certificateChainPath:\n                                    description: |-\n                                      Write the certificate chain at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  credentialBundlePath:\n                                    description: |-\n                                      Write the credential bundle at this path in the projected volume.\n\n                                      The credential bundle is a single file that contains multiple PEM blocks.\n                                      The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private\n                                      key.\n\n                                      The remaining blocks are CERTIFICATE blocks, containing the issued\n                                      certificate chain from the signer (leaf and any intermediates).\n\n                                      Using credentialBundlePath lets your Pod's application code make a single\n                                      atomic read that retrieves a consistent key and certificate chain.  If you\n                                      project them to separate files, your application code will need to\n                                      additionally check that the leaf certificate was issued to the key.\n                                    type: string\n                                  keyPath:\n                                    description: |-\n                                      Write the key at this path in the projected volume.\n\n                                      Most applications should use credentialBundlePath.  When using keyPath\n                                      and certificateChainPath, your application needs to check that the key\n                                      and leaf certificate are consistent, because it is possible to read the\n                                      files mid-rotation.\n                                    type: string\n                                  keyType:\n                                    description: |-\n                                      The type of keypair Kubelet will generate for the pod.\n\n                                      Valid values are \"RSA3072\", \"RSA4096\", \"ECDSAP256\", \"ECDSAP384\",\n                                      \"ECDSAP521\", and \"ED25519\".\n                                    type: string\n                                  maxExpirationSeconds:\n                                    description: |-\n                                      maxExpirationSeconds is the maximum lifetime permitted for the\n                                      certificate.\n\n                                      Kubelet copies this value verbatim into the PodCertificateRequests it\n                                      generates for this projection.\n\n                                      If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver\n                                      will reject values shorter than 3600 (1 hour).  The maximum allowable\n                                      value is 7862400 (91 days).\n\n                                      The signer implementation is then free to issue a certificate with any\n                                      lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600\n                                      seconds (1 hour).  This constraint is enforced by kube-apiserver.\n                                      `kubernetes.io` signers will never issue certificates with a lifetime\n                                      longer than 24 hours.\n                                    format: int32\n                                    type: integer\n                                  signerName:\n                                    description: Kubelet's generated CSRs will be addressed to this signer.\n                                    type: string\n                                  userAnnotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: |-\n                                      userAnnotations allow pod authors to pass additional information to\n                                      the signer implementation.  Kubernetes does not restrict or validate this\n                                      metadata in any way.\n\n                                      These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of\n                                      the PodCertificateRequest objects that Kubelet creates.\n\n                                      Entries are subject to the same validation as object metadata annotations,\n                                      with the addition that all keys must be domain-prefixed. No restrictions\n                                      are placed on values, except an overall size limitation on the entire field.\n\n                                      Signers should document the keys and values they support. Signers should\n                                      deny requests that contain keys they do not recognize.\n                                    type: object\n                                required:\n                                - keyType\n                                - signerName\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: |-\n                                      items if unspecified, each key-value pair in the Data field of the referenced\n                                      Secret will be projected into the volume as a file whose name is the\n                                      key and content is the value. If specified, the listed keys will be\n                                      projected into the specified paths, and unlisted keys will not be\n                                      present. If a key is specified which is not present in the Secret,\n                                      the volume setup will error unless it is marked optional. Paths must be\n                                      relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: |-\n                                            mode is Optional: mode bits used to set permissions on this file.\n                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                            If not specified, the volume defaultMode will be used.\n                                            This might be in conflict with other options that affect the file\n                                            mode, like fsGroup, and the result can be other mode bits set.\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: |-\n                                            path is the relative path of the file to map the key to.\n                                            May not be an absolute path.\n                                            May not contain the path element '..'.\n                                            May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  name:\n                                    default: \"\"\n                                    description: |-\n                                      Name of the referent.\n                                      This field is effectively required, but due to backwards compatibility is\n                                      allowed to be empty. Instances of this type with an empty value here are\n                                      almost certainly wrong.\n                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: |-\n                                      audience is the intended audience of the token. A recipient of a token\n                                      must identify itself with an identifier specified in the audience of the\n                                      token, and otherwise should reject the token. The audience defaults to the\n                                      identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: |-\n                                      expirationSeconds is the requested duration of validity of the service\n                                      account token. As the token approaches expiration, the kubelet volume\n                                      plugin will proactively rotate the service account token. The kubelet will\n                                      start trying to rotate the token if the token is older than 80 percent of\n                                      its time to live or if the token is older than 24 hours.Defaults to 1 hour\n                                      and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: |-\n                                      path is the path relative to the mount point of the file to project the\n                                      token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                      type: object\n                    quobyte:\n                      description: |-\n                        quobyte represents a Quobyte mount on the host that shares a pod's lifetime.\n                        Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.\n                      properties:\n                        group:\n                          description: |-\n                            group to map volume access to\n                            Default is no group\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the Quobyte volume to be mounted with read-only permissions.\n                            Defaults to false.\n                          type: boolean\n                        registry:\n                          description: |-\n                            registry represents a single or multiple Quobyte Registry services\n                            specified as a string as host:port pair (multiple entries are separated with commas)\n                            which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: |-\n                            tenant owning the given Quobyte volume in the Backend\n                            Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: |-\n                            user to map volume access to\n                            Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: |-\n                        rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\n                        Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type of the volume that you want to mount.\n                            Tip: Ensure that the filesystem type is supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                          type: string\n                        image:\n                          description: |-\n                            image is the rados image name.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        keyring:\n                          default: /etc/ceph/keyring\n                          description: |-\n                            keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        monitors:\n                          description: |-\n                            monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          items:\n                            type: string\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        pool:\n                          default: rbd\n                          description: |-\n                            pool is the rados pool name.\n                            Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly here will force the ReadOnly setting in VolumeMounts.\n                            Defaults to false.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef is name of the authentication secret for RBDUser. If provided\n                            overrides keyring.\n                            Default is nil.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          default: admin\n                          description: |-\n                            user is the rados user name.\n                            Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: |-\n                        scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                        Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.\n                      properties:\n                        fsType:\n                          default: xfs\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly Defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef references to the secret for ScaleIO user and other\n                            sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          default: ThinProvisioned\n                          description: |-\n                            storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: |-\n                            volumeName is the name of a volume already created in the ScaleIO system\n                            that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: |-\n                        secret represents a secret that should populate this volume.\n                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                      properties:\n                        defaultMode:\n                          description: |-\n                            defaultMode is Optional: mode bits used to set permissions on created files by default.\n                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                            YAML accepts both octal and decimal values, JSON requires decimal values\n                            for mode bits. Defaults to 0644.\n                            Directories within the path are not affected by this setting.\n                            This might be in conflict with other options that affect the file\n                            mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        items:\n                          description: |-\n                            items If unspecified, each key-value pair in the Data field of the referenced\n                            Secret will be projected into the volume as a file whose name is the\n                            key and content is the value. If specified, the listed keys will be\n                            projected into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in the Secret,\n                            the volume setup will error unless it is marked optional. Paths must be\n                            relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: |-\n                                  mode is Optional: mode bits used to set permissions on this file.\n                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\n                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\n                                  If not specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that affect the file\n                                  mode, like fsGroup, and the result can be other mode bits set.\n                                format: int32\n                                type: integer\n                              path:\n                                description: |-\n                                  path is the relative path of the file to map the key to.\n                                  May not be an absolute path.\n                                  May not contain the path element '..'.\n                                  May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: |-\n                            secretName is the name of the secret in the pod's namespace to use.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n                          type: string\n                      type: object\n                    storageos:\n                      description: |-\n                        storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                        Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is the filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: |-\n                            readOnly defaults to false (read/write). ReadOnly here will force\n                            the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: |-\n                            secretRef specifies the secret to use for obtaining the StorageOS API\n                            credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              default: \"\"\n                              description: |-\n                                Name of the referent.\n                                This field is effectively required, but due to backwards compatibility is\n                                allowed to be empty. Instances of this type with an empty value here are\n                                almost certainly wrong.\n                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: |-\n                            volumeName is the human-readable name of the StorageOS volume.  Volume\n                            names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: |-\n                            volumeNamespace specifies the scope of the volume within StorageOS.  If no\n                            namespace is specified then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS for tighter integration.\n                            Set VolumeName to any name to override the default behaviour.\n                            Set to \"default\" if you are not using namespaces within StorageOS.\n                            Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: |-\n                        vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.\n                        Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type\n                        are redirected to the csi.vsphere.vmware.com CSI driver.\n                      properties:\n                        fsType:\n                          description: |-\n                            fsType is filesystem type to mount.\n                            Must be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              web:\n                description: web defines the configuration of the ThanosRuler web server.\n                properties:\n                  httpConfig:\n                    description: httpConfig defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: headers defines a list of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: |-\n                              contentSecurityPolicy defines the Content-Security-Policy header to HTTP responses.\n                              Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: |-\n                              strictTransportSecurity defines the Strict-Transport-Security header to HTTP responses.\n                              Unset if blank.\n                              Please make sure that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications hosted on the same\n                              domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: |-\n                              xContentTypeOptions defines the X-Content-Type-Options header to HTTP responses.\n                              Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: |-\n                              xFrameOptions defines the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: |-\n                              xXSSProtection defines the X-XSS-Protection header to all responses.\n                              Unset if blank.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: |-\n                          http2 enable HTTP/2 support. Note that HTTP/2 is only supported with TLS.\n                          When TLSConfig is not configured, HTTP/2 will be disabled.\n                          Whenever the value of the field changes, a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  tlsConfig:\n                    description: tlsConfig defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: |-\n                          cert defines the Secret or ConfigMap containing the TLS certificate for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `certFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: |-\n                          certFile defines the path to the TLS certificate file in the container for the web server.\n\n                          Either `keySecret` or `keyFile` must be defined.\n\n                          It is mutually exclusive with `cert`.\n                        type: string\n                      cipherSuites:\n                        description: |-\n                          cipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.\n\n                          If not defined, the Go default cipher suites are used.\n                          Available cipher suites are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: |-\n                          client_ca defines the Secret or ConfigMap containing the CA certificate for client certificate\n                          authentication to the server.\n\n                          It is mutually exclusive with `clientCAFile`.\n                        properties:\n                          configMap:\n                            description: configMap defines the ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: secret defines the Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                default: \"\"\n                                description: |-\n                                  Name of the referent.\n                                  This field is effectively required, but due to backwards compatibility is\n                                  allowed to be empty. Instances of this type with an empty value here are\n                                  almost certainly wrong.\n                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: |-\n                          clientAuthType defines the server policy for client TLS authentication.\n\n                          For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType\n                        type: string\n                      clientCAFile:\n                        description: |-\n                          clientCAFile defines the path to the CA certificate file for client certificate authentication to\n                          the server.\n\n                          It is mutually exclusive with `client_ca`.\n                        type: string\n                      curvePreferences:\n                        description: |-\n                          curvePreferences defines elliptic curves that will be used in an ECDHE handshake, in preference\n                          order.\n\n                          Available curves are documented in the Go documentation:\n                          https://golang.org/pkg/crypto/tls/#CurveID\n                        items:\n                          type: string\n                        type: array\n                      keyFile:\n                        description: |-\n                          keyFile defines the path to the TLS private key file in the container for the web server.\n\n                          If defined, either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keySecret`.\n                        type: string\n                      keySecret:\n                        description: |-\n                          keySecret defines the secret containing the TLS private key for the web server.\n\n                          Either `cert` or `certFile` must be defined.\n\n                          It is mutually exclusive with `keyFile`.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            default: \"\"\n                            description: |-\n                              Name of the referent.\n                              This field is effectively required, but due to backwards compatibility is\n                              allowed to be empty. Instances of this type with an empty value here are\n                              almost certainly wrong.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: maxVersion defines the Maximum TLS version that is acceptable.\n                        type: string\n                      minVersion:\n                        description: minVersion defines the minimum TLS version that is acceptable.\n                        type: string\n                      preferServerCipherSuites:\n                        description: |-\n                          preferServerCipherSuites defines whether the server selects the client's most preferred cipher\n                          suite, or the server's most preferred cipher suite.\n\n                          If true then the server's preference, as expressed in\n                          the order of elements in cipherSuites, is used.\n                        type: boolean\n                    type: object\n                type: object\n            type: object\n          status:\n            description: |-\n              status defines the most recent observed status of the ThanosRuler cluster. Read-only.\n              More info:\n              https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n            properties:\n              availableReplicas:\n                description: |-\n                  availableReplicas defines the total number of available pods (ready for at least minReadySeconds)\n                  targeted by this ThanosRuler deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: conditions defines the current state of the ThanosRuler object.\n                items:\n                  description: |-\n                    Condition represents the state of the resources associated with the\n                    Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: message defines human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: |-\n                        observedGeneration defines the .metadata.generation that the\n                        condition was set based upon. For instance, if `.metadata.generation` is\n                        currently 12, but the `.status.conditions[].observedGeneration` is 9, the\n                        condition is out of date with respect to the current state of the\n                        instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: status of the condition.\n                      minLength: 1\n                      type: string\n                    type:\n                      description: type of the condition being reported.\n                      minLength: 1\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: |-\n                  paused defines whether any actions on the underlying managed objects are\n                  being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: |-\n                  replicas defines the total number of non-terminated pods targeted by this ThanosRuler deployment\n                  (their labels match the selector).\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: unavailableReplicas defines the total number of unavailable pods targeted by this ThanosRuler deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: |-\n                  updatedReplicas defines the total number of non-terminated pods targeted by this ThanosRuler deployment\n                  that have the desired version spec.\n                format: int32\n                type: integer\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "manifests/setup/namespace.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    pod-security.kubernetes.io/warn: privileged\n    pod-security.kubernetes.io/warn-version: latest\n  name: monitoring\n"
  },
  {
    "path": "scripts/generate-schemas.sh",
    "content": "#!/bin/bash\n\nDIR=\"crdschemas\"\n\n# Go to git repository root\ncd ./$(git rev-parse --show-cdup)\n\nrm -rf \"$DIR\"\nmkdir \"$DIR\"\n\nfor crd in vendor/prometheus-operator/*-crd.json; do\n\tjq '.spec.versions[0].schema.openAPIV3Schema' < \"$crd\" > \"$DIR/$(basename \"$crd\" | sed 's/s-crd//;s/prometheuse/prometheus/')\"\ndone\n"
  },
  {
    "path": "scripts/generate-versions.sh",
    "content": "#!/bin/bash\n\nset -euo pipefail\n\n# Get component version from GitHub API\nget_latest_version() {\n  echo >&2 \"Checking release version for ${1}\"\n  v=$(curl --retry 5 --silent --fail -H \"Authorization: token $GITHUB_TOKEN\" \"https://api.github.com/repos/${1}/releases/latest\" | jq '.tag_name' | tr -d '\"v')\n  if [ \"${v}\" == \"\" ]; then\n    # Get latest tag if no release is generated\n    v=$(curl --retry 5 --silent --fail -H \"Authorization: token $GITHUB_TOKEN\" \"https://api.github.com/repos/${1}/tags\" | jq '.[].name' | head -n1 | tr -d '\"v')\n  fi\n  echo \"$v\"\n}\n\n# Get component version from version file\nget_current_version() {\n  echo >&2 \"Reading currently used version of ${1}\"\n  v=$(jq -r \".${1}\" \"$VERSION_FILE\")\n  if [ \"${v}\" == \"\" ]; then\n    echo >&2 \"Couldn't read version of ${1} from $VERSION_FILE\"\n    exit 1\n  fi\n  echo \"$v\"\n}\n\n# Get version from online source and filter out unstable releases. In case of unstable release use what is set in version file\nget_version() {\n  component=\"${1}\"\n  v=\"$(get_latest_version \"${component}\")\"\n\n  component=\"$(convert_to_camel_case \"$(echo \"${component}\" | sed 's/^.*\\///')\")\"\n  cv=\"$(get_current_version \"${component}\")\"\n\n  # Advanced AI heurestics to filter out common patterns suggesting new version is not stable /s\n  if [[ \"$v\" == \"\" ]] || [[ \"$v\" == *\"alpha\"* ]] || [[ \"$v\" == *\"beta\"* ]] || [[ \"$v\" == *\"rc\"* ]] || [[ \"$v\" == *\"helm\"* ]]; then\n     echo \"$cv\"\n     return\n  fi\n\n  # Use higher version from new version and current version\n  v=$(printf '%s\\n' \"$v\" \"$cv\" | sort -V -r | head -n1)\n\n  echo \"$v\"\n}\n\nconvert_to_camel_case() {\n  echo \"${1}\" | sed -E 's/[ _-]([a-z])/\\U\\1/gi;s/^([A-Z])/\\l\\1/'\n}\n\n# File is used to read current versions\nVERSION_FILE=\"$(pwd)/jsonnet/kube-prometheus/versions.json\"\n\n# token can be passed as `GITHUB_TOKEN` variable or passed as first argument\nGITHUB_TOKEN=${GITHUB_TOKEN:-${1}}\n\nif [ -z \"$GITHUB_TOKEN\" ]; then\n\techo >&2 \"GITHUB_TOKEN not set. Exiting\"\n\texit 1\nfi\n\ncat <<-EOF\n{\n  \"alertmanager\": \"$(get_version \"prometheus/alertmanager\")\",\n  \"blackboxExporter\": \"$(get_version \"prometheus/blackbox_exporter\")\",\n  \"grafana\": \"$(get_version \"grafana/grafana\")\",\n  \"kubeStateMetrics\": \"$(get_version \"kubernetes/kube-state-metrics\")\",\n  \"nodeExporter\": \"$(get_version \"prometheus/node_exporter\")\",\n  \"prometheus\": \"$(get_version \"prometheus/prometheus\")\",\n  \"prometheusAdapter\": \"$(get_version \"kubernetes-sigs/prometheus-adapter\")\",\n  \"prometheusOperator\": \"$(get_version \"prometheus-operator/prometheus-operator\")\",\n  \"kubeRbacProxy\": \"$(get_version \"brancz/kube-rbac-proxy\")\",\n  \"configmapReload\": \"$(get_version \"jimmidyson/configmap-reload\")\",\n  \"pyrra\": \"$(get_version \"pyrra-dev/pyrra\")\"\n}\nEOF\n"
  },
  {
    "path": "scripts/get-new-changelogs.sh",
    "content": "#!/bin/bash\n\nset -euo pipefail\n\n# Get the freshly updated components versions.\n# Should be only used after running ./scripts/generate-versions and before\n# committing any changes.\nget_updated_versions() {\n  # Get only the newly updated versions from the versions file.\n  echo \"$(git diff -U0 -- \"${VERSION_FILE}\" | grep '^[+]' | grep -Ev '^(--- a/|\\+\\+\\+ b/)' | tr -d '\",:+' | awk -F'\"' '{print $1}')\"\n}\n\n# Returns github changelog url based on a given repository url and tag.\nget_changelog_url() {\n  echo \"https://github.com/${1}/releases/tag/v${2}\"\n}\n\n# Gets all the new changelogs from the updated components version.\nget_changelog_urls() {\n  while IFS= read -r updated_version; do\n    # Skip any empty lines\n    [[ -z \"$updated_version\" ]] && continue\n\n    # Split into component and version\n    read -r component version <<< \"$updated_version\"\n\n    case \"${component}\" in\n      alertmanager)\n        get_changelog_url \"prometheus/alertmanager\" \"${version}\"\n        ;;\n      blackboxExporter)\n        get_changelog_url \"prometheus/blackbox_exporter\" \"${version}\"\n        ;;\n      grafana)\n        get_changelog_url \"grafana/grafana\" \"${version}\"\n        ;;\n      kubeStateMetrics)\n        get_changelog_url \"kubernetes/kube-state-metrics\" \"${version}\"\n        ;;\n      nodeExporter)\n        get_changelog_url \"prometheus/node_exporter\" \"${version}\"\n        ;;\n      prometheus)\n        get_changelog_url \"prometheus/prometheus\" \"${version}\"\n        ;;\n      prometheusAdapter)\n        get_changelog_url \"kubernetes-sigs/prometheus-adapter\" \"${version}\"\n        ;;\n      prometheusOperator)\n        get_changelog_url \"prometheus-operator/prometheus-operator\" \"${version}\"\n        ;;\n      kubeRbacProxy)\n        get_changelog_url \"brancz/kube-rbac-proxy\" \"${version}\"\n        ;;\n      configmapReload)\n        get_changelog_url \"jimmidyson/configmap-reload\" \"${version}\"\n        ;;\n      pyrra)\n        get_changelog_url \"pyrra-dev/pyrra\" \"${version}\"\n        ;;\n      *)\n        echo \"Unknown component ${component} updated\"\n        exit 1\n        ;;\n    esac\n  done <<< \"$(get_updated_versions)\"\n}\n\n# File is used to read current versions\nVERSION_FILE=\"$(pwd)/jsonnet/kube-prometheus/versions.json\"\n\nget_changelog_urls\n"
  },
  {
    "path": "scripts/go.mod",
    "content": "module _ // go.mod created for tooling dependencies\n\ngo 1.24.0\n\ntoolchain go1.24.3\n\nrequire (\n\tgithub.com/brancz/gojsontoyaml v0.1.0\n\tgithub.com/bwplotka/mdox v0.9.1-0.20220718065926-6a6aac7d5d30\n\tgithub.com/google/go-jsonnet v0.21.0\n\tgithub.com/jsonnet-bundler/jsonnet-bundler v0.6.0\n\tgithub.com/yannh/kubeconform v0.7.0\n\tsigs.k8s.io/yaml v1.4.0 // indirect\n)\n\nrequire (\n\tgithub.com/Kunde21/markdownfmt/v2 v2.1.1-0.20210810103848-727f02f4c51c // indirect\n\tgithub.com/PuerkitoBio/goquery v1.5.1 // indirect\n\tgithub.com/alecthomas/chroma v0.10.0 // indirect\n\tgithub.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect\n\tgithub.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect\n\tgithub.com/andybalholm/cascadia v1.2.0 // indirect\n\tgithub.com/antchfx/htmlquery v1.2.3 // indirect\n\tgithub.com/antchfx/xmlquery v1.3.4 // indirect\n\tgithub.com/antchfx/xpath v1.1.10 // indirect\n\tgithub.com/aymerick/douceur v0.2.0 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/bep/godartsass v0.14.0 // indirect\n\tgithub.com/bep/golibsass v1.1.0 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.2.0 // indirect\n\tgithub.com/charmbracelet/glamour v0.5.0 // indirect\n\tgithub.com/clbanning/mxj/v2 v2.5.6 // indirect\n\tgithub.com/cli/safeexec v1.0.0 // indirect\n\tgithub.com/dlclark/regexp2 v1.11.0 // indirect\n\tgithub.com/efficientgo/tools/core v0.0.0-20210609125236-d73259166f20 // indirect\n\tgithub.com/efficientgo/tools/extkingpin v0.0.0-20210609125236-d73259166f20 // indirect\n\tgithub.com/elliotchance/orderedmap/v2 v2.2.0 // indirect\n\tgithub.com/fatih/color v1.18.0 // indirect\n\tgithub.com/felixge/fgprof v0.9.1 // indirect\n\tgithub.com/ghodss/yaml v1.0.0 // indirect\n\tgithub.com/go-kit/kit v0.10.0 // indirect\n\tgithub.com/go-logfmt/logfmt v0.5.0 // indirect\n\tgithub.com/gobwas/glob v0.2.3 // indirect\n\tgithub.com/gocolly/colly/v2 v2.1.1-0.20201013153555-8252c346cfb0 // indirect\n\tgithub.com/gohugoio/hugo v0.101.0 // indirect\n\tgithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect\n\tgithub.com/golang/protobuf v1.5.3 // indirect\n\tgithub.com/google/go-cmp v0.6.0 // indirect\n\tgithub.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect\n\tgithub.com/gorilla/css v1.0.0 // indirect\n\tgithub.com/hashicorp/go-cleanhttp v0.5.2 // indirect\n\tgithub.com/hashicorp/go-retryablehttp v0.7.7 // indirect\n\tgithub.com/kennygrant/sanitize v1.2.4 // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.2.0 // indirect\n\tgithub.com/mattn/go-colorable v0.1.13 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.13 // indirect\n\tgithub.com/mattn/go-shellwords v1.0.10 // indirect\n\tgithub.com/mattn/go-sqlite3 v1.14.7 // indirect\n\tgithub.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect\n\tgithub.com/microcosm-cc/bluemonday v1.0.17 // indirect\n\tgithub.com/mitchellh/mapstructure v1.5.0 // indirect\n\tgithub.com/muesli/reflow v0.3.0 // indirect\n\tgithub.com/muesli/termenv v0.9.0 // indirect\n\tgithub.com/niklasfasching/go-org v1.6.5 // indirect\n\tgithub.com/oklog/run v1.1.0 // indirect\n\tgithub.com/olekukonko/tablewriter v0.0.5 // indirect\n\tgithub.com/pelletier/go-toml/v2 v2.0.2 // indirect\n\tgithub.com/pkg/errors v0.9.1 // indirect\n\tgithub.com/prometheus/client_golang v1.12.2 // indirect\n\tgithub.com/prometheus/client_model v0.2.0 // indirect\n\tgithub.com/prometheus/common v0.32.1 // indirect\n\tgithub.com/prometheus/procfs v0.7.3 // indirect\n\tgithub.com/rivo/uniseg v0.2.0 // indirect\n\tgithub.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect\n\tgithub.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect\n\tgithub.com/sergi/go-diff v1.3.1 // indirect\n\tgithub.com/spf13/afero v1.8.2 // indirect\n\tgithub.com/spf13/cast v1.5.0 // indirect\n\tgithub.com/spf13/jwalterweatherman v1.1.0 // indirect\n\tgithub.com/stretchr/testify v1.8.1 // indirect\n\tgithub.com/tdewolff/parse/v2 v2.6.0 // indirect\n\tgithub.com/temoto/robotstxt v1.1.1 // indirect\n\tgithub.com/theckman/yacspin v0.8.0 // indirect\n\tgithub.com/yuin/goldmark v1.4.12 // indirect\n\tgithub.com/yuin/goldmark-emoji v1.0.1 // indirect\n\tgo.uber.org/goleak v1.1.11-0.20210813005559-691160354723 // indirect\n\tgolang.org/x/crypto v0.45.0 // indirect\n\tgolang.org/x/net v0.47.0 // indirect\n\tgolang.org/x/sys v0.38.0 // indirect\n\tgolang.org/x/text v0.31.0 // indirect\n\tgoogle.golang.org/appengine v1.6.7 // indirect\n\tgoogle.golang.org/protobuf v1.33.0 // indirect\n\tgopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect\n\tgopkg.in/yaml.v2 v2.4.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n)\n"
  },
  {
    "path": "scripts/go.sum",
    "content": "bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=\ncloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=\ncloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=\ncloud.google.com/go v0.88.0/go.mod h1:dnKwfYbP9hQhefiUvpbcAyoGSHUrOxR20JVElLiUvEY=\ncloud.google.com/go v0.89.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=\ncloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=\ncloud.google.com/go v0.92.2/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=\ncloud.google.com/go v0.92.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=\ncloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=\ncloud.google.com/go v0.94.0/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=\ncloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=\ncloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=\ncloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=\ncloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=\ncloud.google.com/go v0.101.0/go.mod h1:hEiddgDb77jDQ+I80tURYNJEnuwPzFU8awCFFRLKjW0=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=\ncloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=\ncloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=\ncloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=\ncloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/firestore v1.5.0/go.mod h1:c4nNYR1qdq7eaZ+jSc5fonrQN2k3M7sWATcYTiakjEo=\ncloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=\ncloud.google.com/go/kms v0.1.0/go.mod h1:8Qp8PCAypHg4FdmlyW1QRAv09BGQ9Uzh7JnmIZxPk+c=\ncloud.google.com/go/monitoring v0.1.0/go.mod h1:Hpm3XfzJv+UTiXzCG5Ffp0wijzHTC7Cv4eR7o3x/fEE=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/pubsub v1.16.0/go.mod h1:6A8EfoWZ/lUvCWStKGwAWauJZSiuV0Mkmu6WilK/TxQ=\ncloud.google.com/go/secretmanager v0.1.0/go.mod h1:3nGKHvnzDUVit7U0S9KAKJ4aOsO1xtwRG+7ey5LK1bM=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=\ncloud.google.com/go/storage v1.16.1/go.mod h1:LaNorbty3ehnU3rEjXSNV/NRgQA0O8Y+uh6bPe5UOk4=\ncloud.google.com/go/storage v1.22.0/go.mod h1:GbaLEoMqbVm6sx3Z0R++gSiBlgMv6yUi2q1DeGFKQgE=\ncloud.google.com/go/trace v0.1.0/go.mod h1:wxEwsoeRVPbeSkt7ZC9nWCgmoKQRAoySN7XHW2AmI7g=\ncontrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA=\ncontrib.go.opencensus.io/exporter/stackdriver v0.13.8/go.mod h1:huNtlWx75MwO7qMs0KrMxPZXzNNWebav1Sq/pm02JdQ=\ncontrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/Azure/azure-amqp-common-go/v3 v3.1.0/go.mod h1:PBIGdzcO1teYoufTKMcGibdKaYZv4avS+O6LNIp8bq0=\ngithub.com/Azure/azure-amqp-common-go/v3 v3.1.1/go.mod h1:YsDaPfaO9Ub2XeSKdIy2DfwuiQlHQCauHJwSqtrkECI=\ngithub.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k=\ngithub.com/Azure/azure-sdk-for-go v51.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=\ngithub.com/Azure/azure-sdk-for-go v57.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=\ngithub.com/Azure/azure-service-bus-go v0.10.16/go.mod h1:MlkLwGGf1ewcx5jZadn0gUEty+tTg0RaElr6bPf+QhI=\ngithub.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck=\ngithub.com/Azure/go-amqp v0.13.0/go.mod h1:qj+o8xPCz9tMSbQ83Vp8boHahuRDl5mkNHyt1xlxUTs=\ngithub.com/Azure/go-amqp v0.13.11/go.mod h1:D5ZrjQqB1dyp1A+G73xeL/kNn7D5qHJIIsNNps7YNmk=\ngithub.com/Azure/go-amqp v0.13.12/go.mod h1:D5ZrjQqB1dyp1A+G73xeL/kNn7D5qHJIIsNNps7YNmk=\ngithub.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=\ngithub.com/Azure/go-autorest/autorest v0.11.3/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw=\ngithub.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw=\ngithub.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=\ngithub.com/Azure/go-autorest/autorest v0.11.20/go.mod h1:o3tqFY+QR40VOlk+pV4d77mORO64jOXSgEnPQgLK6JY=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.15/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A=\ngithub.com/Azure/go-autorest/autorest/azure/auth v0.5.8/go.mod h1:kxyKZTSfKh8OVFWPAgOgQ/frrJgeYQJPyR5fLFmXko4=\ngithub.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM=\ngithub.com/Azure/go-autorest/autorest/azure/cli v0.4.3/go.mod h1:yAQ2b6eP/CmLPnmLvxtT1ALIY3OR1oFcCqVBi8vHiTc=\ngithub.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=\ngithub.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=\ngithub.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=\ngithub.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE=\ngithub.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E=\ngithub.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=\ngithub.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=\ngithub.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=\ngithub.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69/go.mod h1:L1AbZdiDllfyYH5l5OkAaZtk7VkWe89bPJFmnDBNHxg=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/cloudsql-proxy v1.24.0/go.mod h1:3tx938GhY4FC+E1KT/jNjDw7Z5qxAEtIiERJ2sXjnII=\ngithub.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=\ngithub.com/Kunde21/markdownfmt/v2 v2.1.1-0.20210810103848-727f02f4c51c h1:rnouiLtDKeaWKnxRViK454oCI8jkhWv5fItCvZ9nJOU=\ngithub.com/Kunde21/markdownfmt/v2 v2.1.1-0.20210810103848-727f02f4c51c/go.mod h1:LFJueuHZej/Z7Xhqh/XgClfkDjZiiEBOLVTt1Duq1r0=\ngithub.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=\ngithub.com/PuerkitoBio/goquery v1.5.1 h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=\ngithub.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=\ngithub.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=\ngithub.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=\ngithub.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=\ngithub.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=\ngithub.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=\ngithub.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=\ngithub.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=\ngithub.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=\ngithub.com/alecthomas/chroma/v2 v2.0.1/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs=\ngithub.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs=\ngithub.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=\ngithub.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=\ngithub.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=\ngithub.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=\ngithub.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=\ngithub.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=\ngithub.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=\ngithub.com/andybalholm/cascadia v1.2.0 h1:vuRCkM5Ozh/BfmsaTm26kbjm0mIOM3yS5Ek/F5h18aE=\ngithub.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY=\ngithub.com/antchfx/htmlquery v1.2.3 h1:sP3NFDneHx2stfNXCKbhHFo8XgNjCACnU/4AO5gWz6M=\ngithub.com/antchfx/htmlquery v1.2.3/go.mod h1:B0ABL+F5irhhMWg54ymEZinzMSi0Kt3I2if0BLYa3V0=\ngithub.com/antchfx/xmlquery v1.2.4/go.mod h1:KQQuESaxSlqugE2ZBcM/qn+ebIpt+d+4Xx7YcSGAIrM=\ngithub.com/antchfx/xmlquery v1.3.4 h1:RuhsI4AA5Ma4XoXhaAr2VjJxU0Xp0W2zy/f9ZIpsF4s=\ngithub.com/antchfx/xmlquery v1.3.4/go.mod h1:64w0Xesg2sTaawIdNqMB+7qaW/bSqkQm+ssPaCMWNnc=\ngithub.com/antchfx/xpath v1.1.6/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=\ngithub.com/antchfx/xpath v1.1.8/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=\ngithub.com/antchfx/xpath v1.1.10 h1:cJ0pOvEdN/WvYXxvRrzQH9x5QWKpzHacYO8qzCcDYAg=\ngithub.com/antchfx/xpath v1.1.10/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=\ngithub.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=\ngithub.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=\ngithub.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=\ngithub.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=\ngithub.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=\ngithub.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=\ngithub.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=\ngithub.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0=\ngithub.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=\ngithub.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=\ngithub.com/aws/aws-sdk-go v1.40.34/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=\ngithub.com/aws/aws-sdk-go v1.43.5/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=\ngithub.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=\ngithub.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=\ngithub.com/aws/aws-sdk-go-v2/config v1.7.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.4.0/go.mod h1:dgGR+Qq7Wjcd4AOAW5Rf5Tnv3+x7ed6kETXyS9WCuAY=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.0/go.mod h1:CpNzHK9VEFUCknu50kkB8z58AH2B5DvPP7ea1LHve/Y=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.2.2/go.mod h1:BQV0agm+JEhqR+2RT5e1XTFIDcAAV0eW6z2trp+iduw=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk=\ngithub.com/aws/aws-sdk-go-v2/service/kms v1.5.0/go.mod h1:w7JuP9Oq1IKMFQPkNe3V6s9rOssXzOVEMNEqK1L1bao=\ngithub.com/aws/aws-sdk-go-v2/service/secretsmanager v1.6.0/go.mod h1:B+7C5UKdVq1ylkI/A6O8wcurFtaux0R1njePNPtKwoA=\ngithub.com/aws/aws-sdk-go-v2/service/ssm v1.10.0/go.mod h1:4dXS5YNqI3SNbetQ7X7vfsMlX6ZnboJA2dulBwJx7+g=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.4.0/go.mod h1:+1fpWnL96DL23aXPpMGbsmKe8jLTEfbjuQoA4WS1VaA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.7.0/go.mod h1:0qcSMCyASQPN2sk/1KQLQ2Fh6yq8wm0HSDAimPhzCoM=\ngithub.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=\ngithub.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=\ngithub.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=\ngithub.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=\ngithub.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=\ngithub.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=\ngithub.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/bep/clock v0.3.0/go.mod h1:6Gz2lapnJ9vxpvPxQ2u6FcXFRoj4kkiqQ6pm0ERZlwk=\ngithub.com/bep/debounce v1.2.0/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=\ngithub.com/bep/gitmap v1.1.2/go.mod h1:g9VRETxFUXNWzMiuxOwcudo6DfZkW9jOsOW0Ft4kYaY=\ngithub.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c=\ngithub.com/bep/godartsass v0.14.0 h1:pPb6XkpyDEppS+wK0veh7OXDQc4xzOJI9Qcjb743UeQ=\ngithub.com/bep/godartsass v0.14.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8=\ngithub.com/bep/golibsass v1.1.0 h1:pjtXr00IJZZaOdfryNa9wARTB3Q0BmxC3/V1KNcgyTw=\ngithub.com/bep/golibsass v1.1.0/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA=\ngithub.com/bep/gowebp v0.1.0/go.mod h1:ZhFodwdiFp8ehGJpF4LdPl6unxZm9lLFjxD3z2h2AgI=\ngithub.com/bep/overlayfs v0.6.0/go.mod h1:NFjSmn3kCqG7KX2Lmz8qT8VhPPCwZap3UNogXawoQHM=\ngithub.com/bep/tmc v0.5.1/go.mod h1:tGYHN8fS85aJPhDLgXETVKp+PR382OvFi2+q2GkGsq0=\ngithub.com/bep/workers v1.0.0/go.mod h1:7kIESOB86HfR2379pwoMWNy8B50D7r99fRLUyPSNyCs=\ngithub.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=\ngithub.com/brancz/gojsontoyaml v0.1.0 h1:SdzR3+BCVOqaI42nFGTeaB7/2DgDM4fhuvRLqxatA8M=\ngithub.com/brancz/gojsontoyaml v0.1.0/go.mod h1:+ycZY94+V11XZBUaDEsbLr3hPNS/ZPrDVKKNUg3Sgvg=\ngithub.com/bwplotka/mdox v0.9.1-0.20220718065926-6a6aac7d5d30 h1:mMBizBkgA63TjssxOHVkmRKbQrTG2072FwHL1SYRLac=\ngithub.com/bwplotka/mdox v0.9.1-0.20220718065926-6a6aac7d5d30/go.mod h1:V7cSc2+cOI81xEZ1nt0gVBWFK3IX0C1CB9raoi9NU44=\ngithub.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=\ngithub.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=\ngithub.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=\ngithub.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/charmbracelet/glamour v0.5.0 h1:wu15ykPdB7X6chxugG/NNfDUbyyrCLV9XBalj5wdu3g=\ngithub.com/charmbracelet/glamour v0.5.0/go.mod h1:9ZRtG19AUIzcTm7FGLGbq3D5WKQ5UyZBbQsMQN0XIqc=\ngithub.com/chaseadamsio/goorgeous v2.0.0+incompatible/go.mod h1:6QaC0vFoKWYDth94dHFNgRT2YkT5FHdQp/Yx15aAAi0=\ngithub.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/clbanning/mxj/v2 v2.5.6 h1:Jm4VaCI/+Ug5Q57IzEoZbwx4iQFA6wkXv72juUSeK+g=\ngithub.com/clbanning/mxj/v2 v2.5.6/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=\ngithub.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=\ngithub.com/cli/safeexec v1.0.0 h1:0VngyaIyqACHdcMNWfo6+KdUYnqEr2Sg+bSP1pdF+dI=\ngithub.com/cli/safeexec v1.0.0/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=\ngithub.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=\ngithub.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=\ngithub.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=\ngithub.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=\ngithub.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=\ngithub.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=\ngithub.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=\ngithub.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=\ngithub.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY=\ngithub.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=\ngithub.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=\ngithub.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=\ngithub.com/disintegration/gift v1.2.1/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI=\ngithub.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=\ngithub.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=\ngithub.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=\ngithub.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=\ngithub.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=\ngithub.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=\ngithub.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=\ngithub.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=\ngithub.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=\ngithub.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=\ngithub.com/efficientgo/tools/core v0.0.0-20210609125236-d73259166f20 h1:3wGt9Bx/h2D/0yOlYIhWB7GmsFBPG9vWDg90UUGgn8c=\ngithub.com/efficientgo/tools/core v0.0.0-20210609125236-d73259166f20/go.mod h1:OmVcnJopJL8d3X3sSXTiypGoUSgFq1aDGmlrdi9dn/M=\ngithub.com/efficientgo/tools/extkingpin v0.0.0-20210609125236-d73259166f20 h1:kM/ALyvAnTrwSB+nlKqoKaDnZbInp1YImZvW+gtHwc8=\ngithub.com/efficientgo/tools/extkingpin v0.0.0-20210609125236-d73259166f20/go.mod h1:ZV0utlglOczUWv3ih2AbqPSoLoFzdplUYxwV62eZi6Q=\ngithub.com/elliotchance/orderedmap/v2 v2.2.0 h1:7/2iwO98kYT4XkOjA9mBEIwvi4KpGB4cyHeOFOnj4Vk=\ngithub.com/elliotchance/orderedmap/v2 v2.2.0/go.mod h1:85lZyVbpGaGvHvnKa7Qhx7zncAdBIBq6u56Hb1PRU5Q=\ngithub.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=\ngithub.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=\ngithub.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/evanw/esbuild v0.14.43/go.mod h1:GG+zjdi59yh3ehDn4ZWfPcATxjPDUH53iU4ZJbp7dkY=\ngithub.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=\ngithub.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=\ngithub.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=\ngithub.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=\ngithub.com/felixge/fgprof v0.9.1 h1:E6FUJ2Mlv043ipLOCFqo8+cHo9MhQ203E2cdEK/isEs=\ngithub.com/felixge/fgprof v0.9.1/go.mod h1:7/HK6JFtFaARhIljgP2IV8rJLIoHDoOYoUphsnGvqxE=\ngithub.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=\ngithub.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=\ngithub.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=\ngithub.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=\ngithub.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ=\ngithub.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=\ngithub.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU=\ngithub.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=\ngithub.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=\ngithub.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=\ngithub.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=\ngithub.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=\ngithub.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=\ngithub.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=\ngithub.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=\ngithub.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=\ngithub.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=\ngithub.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=\ngithub.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo=\ngithub.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=\ngithub.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=\ngithub.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=\ngithub.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=\ngithub.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4=\ngithub.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=\ngithub.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=\ngithub.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=\ngithub.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=\ngithub.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=\ngithub.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=\ngithub.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=\ngithub.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=\ngithub.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=\ngithub.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=\ngithub.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=\ngithub.com/gobuffalo/flect v0.2.5/go.mod h1:1ZyCLIbg0YD7sDkzvFdPoOydPtD8y9JQnrOROolUcM8=\ngithub.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=\ngithub.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=\ngithub.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=\ngithub.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=\ngithub.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=\ngithub.com/gocolly/colly v1.2.0/go.mod h1:Hof5T3ZswNVsOHYmba1u03W65HDWgpV5HifSuueE0EA=\ngithub.com/gocolly/colly/v2 v2.1.1-0.20201013153555-8252c346cfb0 h1:f+kHjWsqjft+/nCpQ6TcV3Lgs4lc+6rvBt2sfL4XsbE=\ngithub.com/gocolly/colly/v2 v2.1.1-0.20201013153555-8252c346cfb0/go.mod h1:I2MuhsLjQ+Ex+IzK3afNS8/1qP3AedHOusRPcRdC5o0=\ngithub.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=\ngithub.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=\ngithub.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=\ngithub.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=\ngithub.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=\ngithub.com/gohugoio/go-i18n/v2 v2.1.3-0.20210430103248-4c28c89f8013/go.mod h1:3Ltoo9Banwq0gOtcOwxuHG6omk+AwsQPADyw2vQYOJQ=\ngithub.com/gohugoio/hugo v0.101.0 h1:IARZnjaXCak6+x0jG9wLw7ARjB4RAu6i/5G1r0zKjFw=\ngithub.com/gohugoio/hugo v0.101.0/go.mod h1:sqCS5HTRJmPD6ZHqIy8NVfTwWyhaPmN6gsiIP/UUD6M=\ngithub.com/gohugoio/locales v0.14.0/go.mod h1:ip8cCAv/cnmVLzzXtiTpPwgJ4xhKZranqNqtoIu0b/4=\ngithub.com/gohugoio/localescompressed v1.0.1/go.mod h1:jBF6q8D7a0vaEmcWPNcAjUZLJaIVNiwvM3WlmTvooB0=\ngithub.com/gohugoio/testmodBuilder/mods v0.0.0-20190520184928-c56af20f2e95/go.mod h1:bOlVlCa1/RajcHpXkrUXPSHB/Re1UnlXxD1Qp8SKOd8=\ngithub.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=\ngithub.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=\ngithub.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=\ngithub.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\ngithub.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-jsonnet v0.21.0 h1:43Bk3K4zMRP/aAZm9Po2uSEjY6ALCkYUVIcz9HLGMvA=\ngithub.com/google/go-jsonnet v0.21.0/go.mod h1:tCGAu8cpUpEZcdGMmdOu37nh8bGgqubhI5v2iSk3KJQ=\ngithub.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk=\ngithub.com/google/go-replayers/httpreplay v1.0.0/go.mod h1:LJhKoTwS5Wy5Ld/peq8dFFG5OfJyHEz7ft+DsTUv25M=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200615235658-03e1cf38a040/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210715191844-86eeefc3e471/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=\ngithub.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=\ngithub.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=\ngithub.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=\ngithub.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=\ngithub.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=\ngithub.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=\ngithub.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=\ngithub.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=\ngithub.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=\ngithub.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=\ngithub.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=\ngithub.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=\ngithub.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=\ngithub.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=\ngithub.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=\ngithub.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=\ngithub.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=\ngithub.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=\ngithub.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=\ngithub.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=\ngithub.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=\ngithub.com/hairyhenderson/go-codeowners v0.2.3-0.20201026200250-cdc7c0759690/go.mod h1:8Qu9UmnhCRunfRv365Z3w+mT/WfLGKJiK+vugY9qNCU=\ngithub.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=\ngithub.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=\ngithub.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=\ngithub.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=\ngithub.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=\ngithub.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=\ngithub.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=\ngithub.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=\ngithub.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=\ngithub.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=\ngithub.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=\ngithub.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=\ngithub.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=\ngithub.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=\ngithub.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=\ngithub.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=\ngithub.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=\ngithub.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=\ngithub.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=\ngithub.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=\ngithub.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=\ngithub.com/jawher/mow.cli v1.1.0/go.mod h1:aNaQlc7ozF3vw6IJ2dHjp2ZFiA4ozMIYY6PyuRJwlUg=\ngithub.com/jdkato/prose v1.2.1/go.mod h1:AiRHgVagnEx2JbQRQowVBKjG0bcs/vtkGCH1dYAL1rA=\ngithub.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=\ngithub.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=\ngithub.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=\ngithub.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=\ngithub.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=\ngithub.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=\ngithub.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=\ngithub.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=\ngithub.com/jsonnet-bundler/jsonnet-bundler v0.6.0 h1:DBnynmjyWBVQ9gUBmTh49x3Dw5/u4CvGO3k2k1CsYNo=\ngithub.com/jsonnet-bundler/jsonnet-bundler v0.6.0/go.mod h1:5esRxD59TyScj6qxT3o7GH0sryBKvVmx2zaEYDXtQkg=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=\ngithub.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=\ngithub.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=\ngithub.com/kennygrant/sanitize v1.2.4 h1:gN25/otpP5vAsO2djbMhF/LQX6R7+O1TB4yv8NzpJ3o=\ngithub.com/kennygrant/sanitize v1.2.4/go.mod h1:LGsjYYtgxbetdg5owWB2mpgUL6e2nfw2eObZ0u0qvak=\ngithub.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=\ngithub.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=\ngithub.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=\ngithub.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=\ngithub.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=\ngithub.com/kyokomi/emoji/v2 v2.2.9/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE=\ngithub.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=\ngithub.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=\ngithub.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=\ngithub.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=\ngithub.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=\ngithub.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=\ngithub.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=\ngithub.com/magefile/mage v1.13.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=\ngithub.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=\ngithub.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=\ngithub.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=\ngithub.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=\ngithub.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=\ngithub.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=\ngithub.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E=\ngithub.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=\ngithub.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=\ngithub.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=\ngithub.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=\ngithub.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=\ngithub.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=\ngithub.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=\ngithub.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=\ngithub.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=\ngithub.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=\ngithub.com/mattn/go-shellwords v1.0.10 h1:Y7Xqm8piKOO3v10Thp7Z36h4FYFjt5xB//6XvOrs2Gw=\ngithub.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=\ngithub.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=\ngithub.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=\ngithub.com/microcosm-cc/bluemonday v1.0.17 h1:Z1a//hgsQ4yjC+8zEkV8IWySkXnsxmdSY642CTFQb5Y=\ngithub.com/microcosm-cc/bluemonday v1.0.17/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM=\ngithub.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=\ngithub.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=\ngithub.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=\ngithub.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=\ngithub.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA=\ngithub.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=\ngithub.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=\ngithub.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/montanaflynn/stats v0.6.3/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=\ngithub.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=\ngithub.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=\ngithub.com/muesli/smartcrop v0.3.0/go.mod h1:i2fCI/UorTfgEpPPLWiFBv4pye+YAG78RwcQLUkocpI=\ngithub.com/muesli/termenv v0.9.0 h1:wnbOaGz+LUR3jNT0zOzinPnyDaCZUQRZj9GxK8eRVl8=\ngithub.com/muesli/termenv v0.9.0/go.mod h1:R/LzAKf+suGs4IsO95y7+7DpFHO0KABgnZqtlyx2mBw=\ngithub.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=\ngithub.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=\ngithub.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=\ngithub.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=\ngithub.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=\ngithub.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=\ngithub.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=\ngithub.com/neurosnap/sentences v1.0.6/go.mod h1:pg1IapvYpWCJJm/Etxeh0+gtMf1rI1STY9S7eUCPbDc=\ngithub.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=\ngithub.com/niklasfasching/go-org v1.6.5 h1:5YAIqNTdl6lAOb7lD2AyQ1RuFGPVrAKvUexphk8PGbo=\ngithub.com/niklasfasching/go-org v1.6.5/go.mod h1:ybv0eGDnxylFUfFE+ySaQc734j/L3+/ChKZ/h63a2wM=\ngithub.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=\ngithub.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=\ngithub.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=\ngithub.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=\ngithub.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=\ngithub.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=\ngithub.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=\ngithub.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=\ngithub.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=\ngithub.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=\ngithub.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=\ngithub.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=\ngithub.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=\ngithub.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=\ngithub.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=\ngithub.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=\ngithub.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=\ngithub.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=\ngithub.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=\ngithub.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=\ngithub.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=\ngithub.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=\ngithub.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=\ngithub.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=\ngithub.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=\ngithub.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=\ngithub.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=\ngithub.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=\ngithub.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=\ngithub.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=\ngithub.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=\ngithub.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=\ngithub.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=\ngithub.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=\ngithub.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=\ngithub.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=\ngithub.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=\ngithub.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=\ngithub.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=\ngithub.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=\ngithub.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=\ngithub.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=\ngithub.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=\ngithub.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=\ngithub.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=\ngithub.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=\ngithub.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=\ngithub.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=\ngithub.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=\ngithub.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=\ngithub.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=\ngithub.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=\ngithub.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=\ngithub.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=\ngithub.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=\ngithub.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=\ngithub.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=\ngithub.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=\ngithub.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=\ngithub.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=\ngithub.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=\ngithub.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=\ngithub.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=\ngithub.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=\ngithub.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=\ngithub.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI=\ngithub.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=\ngithub.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=\ngithub.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=\ngithub.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw=\ngithub.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=\ngithub.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=\ngithub.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=\ngithub.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=\ngithub.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=\ngithub.com/shogo82148/go-shuffle v0.0.0-20180218125048-27e6095f230d/go.mod h1:2htx6lmL0NGLHlO8ZCf+lQBGBHIbEujyywxJArf+2Yc=\ngithub.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=\ngithub.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=\ngithub.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=\ngithub.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=\ngithub.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=\ngithub.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=\ngithub.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=\ngithub.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=\ngithub.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=\ngithub.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=\ngithub.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=\ngithub.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=\ngithub.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=\ngithub.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=\ngithub.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=\ngithub.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=\ngithub.com/spf13/fsync v0.9.0/go.mod h1:fNtJEfG3HiltN3y4cPOz6MLjos9+2pIEqLIgszqhp/0=\ngithub.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=\ngithub.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=\ngithub.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=\ngithub.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=\ngithub.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=\ngithub.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=\ngithub.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=\ngithub.com/tdewolff/minify/v2 v2.11.10/go.mod h1:dHOS3dk+nJ0M3q3uM3VlNzTb70cou+ov0ki7C4PAFgM=\ngithub.com/tdewolff/parse/v2 v2.6.0 h1:f2D7w32JtqjCv6SczWkfwK+m15et42qEtDnZXHoNY70=\ngithub.com/tdewolff/parse/v2 v2.6.0/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho=\ngithub.com/tdewolff/test v1.0.6 h1:76mzYJQ83Op284kMT+63iCNCI7NEERsIN8dLM+RiKr4=\ngithub.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=\ngithub.com/temoto/robotstxt v1.1.1 h1:Gh8RCs8ouX3hRSxxK7B1mO5RFByQ4CmJZDwgom++JaA=\ngithub.com/temoto/robotstxt v1.1.1/go.mod h1:+1AmkuG3IYkh1kv0d2qEB9Le88ehNO0zwOr3ujewlOo=\ngithub.com/theckman/yacspin v0.8.0 h1:9LA2kUol1/+eH5m/ptlbYCrnCEfLCaX4Xn+5tK/AprI=\ngithub.com/theckman/yacspin v0.8.0/go.mod h1:K1H1naXCpDytqETpvmlxWzAq8BbOMy3Wrd0iy0ZNzRI=\ngithub.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=\ngithub.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=\ngithub.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=\ngithub.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=\ngithub.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=\ngithub.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=\ngithub.com/yannh/kubeconform v0.7.0 h1:ZFfniR8VChrWQxaxTUGnNrxw8RIDkjVBrjdhXSamwjw=\ngithub.com/yannh/kubeconform v0.7.0/go.mod h1:oHO1wjM16sTRW6s41HJUox+tD69qOTE5ZVQ9HeqX+xM=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.4/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg=\ngithub.com/yuin/goldmark v1.4.12 h1:6hffw6vALvEDqJ19dOJvJKOoAOKe4NDaTqvd2sktGN0=\ngithub.com/yuin/goldmark v1.4.12/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngithub.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18Wa1os=\ngithub.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ=\ngo.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=\ngo.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=\ngo.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0=\ngo.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=\ngo.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.22.6/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=\ngo.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=\ngo.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=\ngo.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=\ngo.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=\ngo.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=\ngo.uber.org/goleak v1.1.11-0.20210813005559-691160354723 h1:sHOAIxRGBp443oHZIPB+HsUGaksVCXVQENPxwTfQdH4=\ngo.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=\ngo.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=\ngo.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=\ngo.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=\ngo.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=\ngo.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=\ngo.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=\ngo.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=\ngo.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=\ngo.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=\ngocloud.dev v0.24.0/go.mod h1:uA+als++iBX5ShuG4upQo/3Zoz49iIPlYUWHV5mM8w8=\ngolang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=\ngolang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=\ngolang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=\ngolang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=\ngolang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210126194326-f9ce19ea3013/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=\ngolang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=\ngolang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210223095934-7937bea0104d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=\ngolang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=\ngolang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=\ngolang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngoogle.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.37.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=\ngoogle.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=\ngoogle.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=\ngoogle.golang.org/api v0.52.0/go.mod h1:Him/adpjt0sxtkWViy0b6xyKW/SD71CwdJ7HqJo7SrU=\ngoogle.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=\ngoogle.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=\ngoogle.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=\ngoogle.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=\ngoogle.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=\ngoogle.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=\ngoogle.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=\ngoogle.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=\ngoogle.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8=\ngoogle.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs=\ngoogle.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=\ngoogle.golang.org/api v0.76.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=\ngoogle.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=\ngoogle.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=\ngoogle.golang.org/genproto v0.0.0-20210721163202-f1cecdd8b78a/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210722135532-667f2b7c528f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=\ngoogle.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210825212027-de86158e7fda/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E=\ngoogle.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220426171045-31bebdecfb46/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=\ngoogle.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=\ngoogle.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=\ngoogle.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=\ngoogle.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=\ngoogle.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=\ngoogle.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\ngoogle.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=\ngoogle.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=\ngopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=\ngopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=\ngopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=\ngopkg.in/neurosnap/sentences.v1 v1.0.6/go.mod h1:YlK+SN+fLQZj+kY3r8DkGDhDr91+S3JmTb5LSxFRQo0=\ngopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=\ngopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=\ngopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=\ngopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=\ngopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nnhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=\nnhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\nsigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=\nsigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=\nsigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=\nsourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=\n"
  },
  {
    "path": "scripts/minikube-start-kvm.sh",
    "content": "#!/bin/bash\nminikube delete\nminikube addons disable metrics-server\nminikube start \\\n    --vm-driver=kvm2 \\\n    --kubernetes-version=v1.16.0 \\\n    --memory=6g \\\n    --bootstrapper=kubeadm \\\n    --extra-config=kubelet.authentication-token-webhook=true \\\n    --extra-config=kubelet.authorization-mode=Webhook \\\n    --extra-config=scheduler.address=0.0.0.0 \\\n    --extra-config=controller-manager.address=0.0.0.0\n"
  },
  {
    "path": "scripts/minikube-start.sh",
    "content": "#!/bin/bash\nminikube delete\nminikube addons disable metrics-server\nminikube start \\\n    --kubernetes-version=v1.18.1 \\\n    --memory=6g \\\n    --bootstrapper=kubeadm \\\n    --extra-config=kubelet.authentication-token-webhook=true \\\n    --extra-config=kubelet.authorization-mode=Webhook \\\n    --extra-config=scheduler.address=0.0.0.0 \\\n    --extra-config=controller-manager.address=0.0.0.0\n"
  },
  {
    "path": "scripts/monitoring-deploy.sh",
    "content": "#!/bin/bash\n\n# create namespace and CRDs\nkubectl create -f manifests/setup\n\n# wait for CRD creation to complete\nuntil kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo \"\"; done\n\n# create monitoring components\nkubectl create -f manifests/\n\n"
  },
  {
    "path": "scripts/test.sh",
    "content": "#!/usr/bin/env bash\nset -e\n# only exit with zero if all commands of the pipeline exit successfully\nset -o pipefail\n\n# Make sure to use project tooling\nPATH=\"$(pwd)/tmp/bin:${PATH}\"\nTESTFILE=\"$(pwd)/tmp/test.jsonnet\"\nmkdir -p \"$(pwd)/tmp\"\n\nfor i in examples/jsonnet-snippets/*.jsonnet; do\n    [ -f \"$i\" ] || break\n    echo \"Testing: ${i}\"\n    echo \"\"\n    fileContent=$(<\"$i\")\n    snippet=\"local kp = $fileContent;\n\n$(<examples/jsonnet-build-snippet/build-snippet.jsonnet)\"\n    echo \"${snippet}\" > \"${TESTFILE}\"\n    echo \"\\`\\`\\`\"\n    echo \"${snippet}\"\n    echo \"\\`\\`\\`\"\n    echo \"\"\n    jsonnet -J vendor \"${TESTFILE}\" > /dev/null\n    rm -rf \"${TESTFILE}\"\ndone\n\nfor i in examples/*.jsonnet; do\n    [ -f \"$i\" ] || break\n    echo \"Testing: ${i}\"\n    echo \"\"\n    echo \"\\`\\`\\`\"\n    cat \"${i}\"\n    echo \"\\`\\`\\`\"\n    echo \"\"\n    jsonnet -J vendor \"${i}\" > /dev/null\ndone\n"
  },
  {
    "path": "scripts/tools.go",
    "content": "//go:build tools\n// +build tools\n\n// Package tools tracks dependencies for tools that used in the build process.\n// See https://github.com/golang/go/wiki/Modules\npackage tools\n\nimport (\n\t_ \"github.com/brancz/gojsontoyaml\"\n\t_ \"github.com/bwplotka/mdox\"\n\t_ \"github.com/google/go-jsonnet/cmd/jsonnet\"\n\t_ \"github.com/google/go-jsonnet/cmd/jsonnet-lint\"\n\t_ \"github.com/google/go-jsonnet/cmd/jsonnetfmt\"\n\t_ \"github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb\"\n\t_ \"github.com/yannh/kubeconform/cmd/kubeconform\"\n)\n"
  },
  {
    "path": "tests/e2e/kind/config.yml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnetworking:\n  podSubnet: \"10.10.0.0/16\"\n  serviceSubnet: \"10.11.0.0/16\"\nnodes:\n  - role: control-plane\n    extraMounts:\n      - hostPath: /home/runner/work/kube-prometheus/kube-prometheus/.github/workflows/kind/patches\n        containerPath: /patches\nkubeadmConfigPatches:\n  - |\n    kind: ClusterConfiguration\n    controllerManager:\n      extraArgs:\n        bind-address: \"0.0.0.0\"\n    scheduler:\n      extraArgs:\n        bind-address: \"0.0.0.0\"\n  - |\n    kind: InitConfiguration\n    patches:\n      directory: /patches\n"
  },
  {
    "path": "tests/e2e/kind/kube-router.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: kube-router-cfg\n  namespace: kube-system\n  labels:\n    tier: node\n    k8s-app: kube-router\ndata:\n  cni-conf.json: |\n    {\n      \"cniVersion\":\"0.3.0\",\n      \"name\":\"mynet\",\n      \"plugins\":[\n        {\n          \"name\":\"kubernetes\",\n          \"type\":\"bridge\",\n          \"bridge\":\"kube-bridge\",\n          \"isDefaultGateway\":true,\n          \"ipam\":{\n            \"type\":\"host-local\"\n          }\n        }\n      ]\n    }\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  labels:\n    k8s-app: kube-router\n    tier: node\n  name: kube-router\n  namespace: kube-system\nspec:\n  selector:\n    matchLabels:\n      k8s-app: kube-router\n      tier: node\n  template:\n    metadata:\n      labels:\n        k8s-app: kube-router\n        tier: node\n    spec:\n      priorityClassName: system-node-critical\n      serviceAccountName: kube-router\n      containers:\n        - name: kube-router\n          image: docker.io/cloudnativelabs/kube-router\n          imagePullPolicy: Always\n          args:\n            - --run-router=true\n            - --run-firewall=true\n            - --run-service-proxy=false\n            - --bgp-graceful-restart=true\n          env:\n            - name: NODE_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n            - name: KUBE_ROUTER_CNI_CONF_FILE\n              value: /etc/cni/net.d/10-kuberouter.conflist\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: 20244\n            initialDelaySeconds: 10\n            periodSeconds: 3\n          resources:\n            requests:\n              memory: 250Mi\n          securityContext:\n            privileged: true\n          volumeMounts:\n            - name: lib-modules\n              mountPath: /lib/modules\n              readOnly: true\n            - name: cni-conf-dir\n              mountPath: /etc/cni/net.d\n            - name: kubeconfig\n              mountPath: /var/lib/kube-router/kubeconfig\n              readOnly: true\n            - name: xtables-lock\n              mountPath: /run/xtables.lock\n              readOnly: false\n      initContainers:\n        - name: install-cni\n          image: docker.io/cloudnativelabs/kube-router\n          imagePullPolicy: Always\n          command:\n            - /bin/sh\n            - -c\n            - set -e -x;\n              if [ ! -f /etc/cni/net.d/10-kuberouter.conflist ]; then\n              if [ -f /etc/cni/net.d/*.conf ]; then\n              rm -f /etc/cni/net.d/*.conf;\n              fi;\n              TMP=/etc/cni/net.d/.tmp-kuberouter-cfg;\n              cp /etc/kube-router/cni-conf.json ${TMP};\n              mv ${TMP} /etc/cni/net.d/10-kuberouter.conflist;\n              fi\n          volumeMounts:\n            - mountPath: /etc/cni/net.d\n              name: cni-conf-dir\n            - mountPath: /etc/kube-router\n              name: kube-router-cfg\n      hostNetwork: true\n      tolerations:\n        - effect: NoSchedule\n          operator: Exists\n        - key: CriticalAddonsOnly\n          operator: Exists\n        - effect: NoExecute\n          operator: Exists\n      volumes:\n        - name: lib-modules\n          hostPath:\n            path: /lib/modules\n        - name: cni-conf-dir\n          hostPath:\n            path: /etc/cni/net.d\n        - name: kube-router-cfg\n          configMap:\n            name: kube-router-cfg\n        - name: kubeconfig\n          hostPath:\n            path: /var/lib/kube-router/kubeconfig\n        - name: xtables-lock\n          hostPath:\n            path: /run/xtables.lock\n            type: FileOrCreate\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: kube-router\n  namespace: kube-system\n---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: kube-router\n  namespace: kube-system\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - namespaces\n      - pods\n      - services\n      - nodes\n      - endpoints\n    verbs:\n      - list\n      - get\n      - watch\n  - apiGroups:\n      - \"networking.k8s.io\"\n    resources:\n      - networkpolicies\n    verbs:\n      - list\n      - get\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - networkpolicies\n    verbs:\n      - get\n      - list\n      - watch\n---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: kube-router\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kube-router\nsubjects:\n  - kind: ServiceAccount\n    name: kube-router\n    namespace: kube-system\n"
  },
  {
    "path": "tests/e2e/kind/kubernetesControlPlane-kubeControllerManagerPrometheusDiscoveryService.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-controller-manager\n  name: kube-controller-manager-prometheus-discovery\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n  - name: https-metrics\n    port: 10257\n    targetPort: 10257\n  selector:\n    component: kube-controller-manager\n"
  },
  {
    "path": "tests/e2e/kind/kubernetesControlPlane-kubeSchedulerPrometheusDiscoveryService.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-scheduler\n  name: kube-scheduler-prometheus-discovery\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n  - name: https-metrics\n    port: 10259\n    targetPort: 10259\n  selector:\n    component: kube-scheduler\n"
  },
  {
    "path": "tests/e2e/kind/patches/kube-controller-manager.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: kube-controller-manager\n  namespace: kube-system\nspec:\n  containers:\n    - name: kube-controller-manager\n      resources:\n        requests:\n          cpu: 1m\n"
  },
  {
    "path": "tests/e2e/main_test.go",
    "content": "// Copyright 2019 The prometheus-operator Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"slices\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/Jeffail/gabs\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/util/wait\"\n\t\"k8s.io/client-go/kubernetes\"\n\t\"k8s.io/client-go/tools/clientcmd\"\n)\n\nvar promClient *prometheusClient\n\nfunc TestMain(m *testing.M) {\n\tos.Exit(testMain(m))\n}\n\n// testMain circumvents the issue, that one can not call `defer` in TestMain, as\n// `os.Exit` does not honor `defer` statements. For more details see:\n// http://blog.englund.nu/golang,/testing/2017/03/12/using-defer-in-testmain.html\nfunc testMain(m *testing.M) int {\n\tkubeConfigPath, ok := os.LookupEnv(\"KUBECONFIG\")\n\tif !ok {\n\t\tlog.Fatal(\"failed to retrieve KUBECONFIG env var\")\n\t}\n\n\tconfig, err := clientcmd.BuildConfigFromFlags(\"\", kubeConfigPath)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tkubeClient, err := kubernetes.NewForConfig(config)\n\tif err != nil {\n\t\tlog.Fatal(fmt.Errorf(\"creating kubeClient failed: %w\", err))\n\t}\n\n\tpromClient = newPrometheusClient(kubeClient)\n\n\treturn m.Run()\n}\n\nfunc pollCondition(timeout time.Duration, conditionFunc func() error) error {\n\tctx, cancel := context.WithTimeout(context.Background(), timeout)\n\tdefer cancel()\n\n\tvar conditionErr error\n\tif err := wait.PollImmediateUntilWithContext(ctx, 5*time.Second, func(context.Context) (bool, error) {\n\t\tconditionErr = conditionFunc()\n\t\treturn conditionErr == nil, nil\n\t}); err != nil {\n\t\treturn fmt.Errorf(\"%w: %w\", err, conditionErr)\n\t}\n\n\treturn nil\n}\n\nfunc TestQueryPrometheus(t *testing.T) {\n\t// Wait for pod to respond at queries at all. Then start verifying their results.\n\terr := pollCondition(1*time.Minute, func() error {\n\t\t_, err := promClient.query(\"up\")\n\t\treturn err\n\t})\n\tif err != nil {\n\t\tt.Fatal(fmt.Errorf(\"wait for prometheus-k8s: %w\", err))\n\t}\n\n\tfor _, tc := range []struct {\n\t\tjob     string\n\t\texpectN int\n\t}{\n\t\t{\n\t\t\tjob:     \"node-exporter\",\n\t\t\texpectN: 1,\n\t\t}, {\n\t\t\tjob:     \"apiserver\",\n\t\t\texpectN: 1,\n\t\t}, {\n\t\t\t// There are 4 kubelet endpoints.\n\t\t\tjob:     \"kubelet\",\n\t\t\texpectN: 4,\n\t\t}, {\n\t\t\tjob:     \"kube-scheduler\",\n\t\t\texpectN: 1,\n\t\t}, {\n\t\t\tjob:     \"kube-controller-manager\",\n\t\t\texpectN: 1,\n\t\t}, {\n\t\t\tjob:     \"kube-state-metrics\",\n\t\t\texpectN: 1,\n\t\t}, {\n\t\t\tjob:     \"prometheus-k8s\",\n\t\t\texpectN: 1,\n\t\t}, {\n\t\t\tjob:     \"prometheus-operator\",\n\t\t\texpectN: 1,\n\t\t}, {\n\t\t\tjob:     \"alertmanager-main\",\n\t\t\texpectN: 2,\n\t\t},\n\t} {\n\t\tt.Run(tc.job, func(t *testing.T) {\n\t\t\terr = pollCondition(1*time.Minute, func() error {\n\t\t\t\tn, err := promClient.query(fmt.Sprintf(`up{job=\"%s\"} == 1`, tc.job))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tif n < tc.expectN {\n\t\t\t\t\t// Don't return an error as targets may only become visible after a while.\n\t\t\t\t\treturn fmt.Errorf(\"expected at least %d results for job=%q but got %d\", tc.expectN, tc.job, n)\n\t\t\t\t}\n\n\t\t\t\treturn nil\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDroppedMetrics(t *testing.T) {\n\tt.Parallel()\n\n\texceptions := []string{\n\t\t\"scheduler_scheduler_cache_size\",\n\t\t\"prometheus_remote_storage_exemplars_in_total\",\n\t\t\"prometheus_remote_storage_samples_in_total\",\n\t\t\"prometheus_remote_storage_histograms_in_total\",\n\t\t\"prometheus_remote_storage_highest_timestamp_in_seconds\",\n\t}\n\n\t// Query metadata for all metrics and their metadata.\n\tmd, err := promClient.metadata(\"{job=~\\\".+\\\"}\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tfor _, k := range md {\n\t\tif slices.Contains(exceptions, k.Metric) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if the metric' help text contains Deprecated\n\t\tif strings.Contains(k.Help, \"Deprecated\") {\n\t\t\t// query prometheus for the Deprecated metric\n\t\t\tn, err := promClient.query(k.Metric)\n\t\t\tif err != nil {\n\t\t\t\tt.Error(err)\n\t\t\t}\n\t\t\tif n > 0 {\n\t\t\t\tt.Errorf(\"found deprecated metric with name %q and help text %q\", k.Metric, k.Help)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestTargetsScheme(t *testing.T) {\n\tt.Parallel()\n\t// query targets for all endpoints\n\ttgs, err := promClient.targets()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// exclude jobs from checking for http endpoints\n\t// TODO(paulfantom): This should be reduced as we secure connections for those components\n\texclude := map[string]bool{\n\t\t\"alertmanager-main\": true,\n\t\t\"prometheus-k8s\":    true,\n\t\t\"kube-dns\":          true,\n\t\t\"grafana\":           true,\n\t}\n\n\tfor _, k := range tgs.Active {\n\t\tjob := k.Labels[\"job\"]\n\t\tif k.DiscoveredLabels[\"__scheme__\"] == \"http\" && !exclude[string(job)] {\n\t\t\tt.Fatalf(\"target exposing metrics over HTTP instead of HTTPS: %+v\", k)\n\t\t}\n\t}\n}\n\n// TestFailedRuleEvaluations detects recording and alerting rules that may\n// trigger \"many-to-many\" evaluation errors when multiple kube-state-metrics\n// instances are running.\nfunc TestFailedRuleEvaluations(t *testing.T) {\n\tt.Parallel()\n\t// Scale kube-state-metrics to 2 replicas.\n\tkClient := promClient.kubeClient\n\n\tscale, err := kClient.AppsV1().Deployments(\"monitoring\").GetScale(context.Background(), \"kube-state-metrics\", metav1.GetOptions{})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tscale.Spec.Replicas = 2\n\tscale, err = kClient.AppsV1().Deployments(\"monitoring\").UpdateScale(context.Background(), \"kube-state-metrics\", scale, metav1.UpdateOptions{})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Rollback to 1 replica at the end of the test.\n\tdefer func() {\n\t\tscale, err := kClient.AppsV1().Deployments(\"monitoring\").GetScale(context.Background(), \"kube-state-metrics\", metav1.GetOptions{})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\tscale.Spec.Replicas = 1\n\t\t_, err = kClient.AppsV1().Deployments(\"monitoring\").UpdateScale(context.Background(), \"kube-state-metrics\", scale, metav1.UpdateOptions{})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}()\n\n\t// Wait for the 2 replicas of kube-state-metrics to be successfully scraped.\n\terr = pollCondition(2*time.Minute, func() error {\n\t\tn, err := promClient.query(`up{job=\"kube-state-metrics\"} == 1`)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif n != 2 {\n\t\t\treturn fmt.Errorf(\"expecting 2 kube-state-metrics targets, got %d\", n)\n\t\t}\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\tt.Fatalf(\"waiting for kube-state-metrics: %s\", err)\n\t}\n\n\t// Wait for all rule groups to be evaluated at least once without error.\n\tnow := time.Now()\n\terr = pollCondition(5*time.Minute, func() error {\n\t\trsp, err := promClient.apiRequest(\"/api/v1/rules\", \"type\", \"\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tres, err := gabs.ParseJSON(rsp.Data)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgroups, err := res.Path(\"groups\").Children()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif len(groups) == 0 {\n\t\t\treturn fmt.Errorf(\"got 0 rule groups\")\n\t\t}\n\n\t\tfor _, group := range groups {\n\t\t\tgroupName := group.Path(\"name\").Data().(string)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tlastEvalString := group.Path(\"lastEvaluation\").Data().(string)\n\t\t\tlastEval, err := time.Parse(time.RFC3339Nano, lastEvalString)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif lastEval.Before(now) {\n\t\t\t\treturn fmt.Errorf(\"%s not yet evaluated\", groupName)\n\t\t\t}\n\n\t\t\trules, err := group.Path(\"rules\").Children()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif len(rules) == 0 {\n\t\t\t\treturn fmt.Errorf(\"got 0 rules in group %s\", groupName)\n\t\t\t}\n\n\t\t\tfor _, rule := range rules {\n\t\t\t\thealth := rule.Path(\"health\").Data().(string)\n\t\t\t\tif health != \"ok\" {\n\t\t\t\t\treturn fmt.Errorf(\"error evaluating rule: %v\", rule)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n\nfunc TestGrafana(t *testing.T) {\n\tt.Parallel()\n\tkClient := promClient.kubeClient\n\n\terr := pollCondition(5*time.Minute, func() error {\n\t\tgrafanaDeployment, err := kClient.AppsV1().Deployments(\"monitoring\").Get(context.Background(), \"grafana\", metav1.GetOptions{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif grafanaDeployment.Status.ReadyReplicas != *grafanaDeployment.Spec.Replicas {\n\t\t\treturn fmt.Errorf(\"expecting %d replicas, got %d\", *grafanaDeployment.Spec.Replicas, grafanaDeployment.Status.ReadyReplicas)\n\t\t}\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\tt.Fatal(fmt.Errorf(\"timeout while waiting for Grafana deployment ready condition: %w\", err))\n\t}\n}\n"
  },
  {
    "path": "tests/e2e/prometheus_client.go",
    "content": "// Copyright 2019 The prometheus-operator Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage e2e\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"k8s.io/client-go/kubernetes\"\n\n\t\"github.com/Jeffail/gabs\"\n\tpromv1 \"github.com/prometheus/client_golang/api/prometheus/v1\"\n)\n\ntype prometheusClient struct {\n\tkubeClient kubernetes.Interface\n}\n\nfunc newPrometheusClient(kubeClient kubernetes.Interface) *prometheusClient {\n\treturn &prometheusClient{kubeClient}\n}\n\n// Response hold API response in a form similar to apiResponse struct from prometheus/client_golang\n// https://github.com/prometheus/client_golang/blob/master/api/prometheus/v1/api.go\ntype Response struct {\n\tStatus string          `json:\"status\"`\n\tData   json.RawMessage `json:\"data\"`\n}\n\n// apiRequest makes a request against specified Prometheus API endpoint\nfunc (c *prometheusClient) apiRequest(endpoint string, selector string, query string) (Response, error) {\n\treq := c.kubeClient.CoreV1().RESTClient().Get().\n\t\tNamespace(\"monitoring\").\n\t\tResource(\"pods\").\n\t\tSubResource(\"proxy\").\n\t\tName(\"prometheus-k8s-0:9090\").\n\t\tSuffix(endpoint).Param(selector, query)\n\n\tvar data Response\n\tb, err := req.DoRaw(context.Background())\n\tif err != nil {\n\t\treturn data, err\n\t}\n\n\tr := bytes.NewReader(b)\n\tdecoder := json.NewDecoder(r)\n\terr = decoder.Decode(&data)\n\tif err != nil {\n\t\treturn data, err\n\t}\n\n\tif data.Status != \"success\" {\n\t\treturn data, fmt.Errorf(\"status of returned response was not successful; status: %s\", data.Status)\n\t}\n\n\treturn data, err\n}\n\n// Query makes a request against the Prometheus /api/v1/query endpoint.\nfunc (c *prometheusClient) query(query string) (int, error) {\n\treq := c.kubeClient.CoreV1().RESTClient().Get().\n\t\tNamespace(\"monitoring\").\n\t\tResource(\"pods\").\n\t\tSubResource(\"proxy\").\n\t\tName(\"prometheus-k8s-0:9090\").\n\t\tSuffix(\"/api/v1/query\").Param(\"query\", query)\n\n\tb, err := req.DoRaw(context.Background())\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tres, err := gabs.ParseJSON(b)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn, err := res.ArrayCountP(\"data.result\")\n\treturn n, err\n}\n\n// metadata makes a request against the Prometheus /api/v1/targets/metadata endpoint.\n// It returns all the metrics and its metadata.\nfunc (c *prometheusClient) metadata(query string) ([]promv1.MetricMetadata, error) {\n\tvar metadata []promv1.MetricMetadata\n\trsp, err := c.apiRequest(\"/api/v1/targets/metadata\", \"match_target\", query)\n\n\tr := bytes.NewReader(rsp.Data)\n\tdecoder := json.NewDecoder(r)\n\terr = decoder.Decode(&metadata)\n\tif err != nil {\n\t\treturn metadata, err\n\t}\n\treturn metadata, err\n}\n\n// targets makes a request against the Prometheus /api/v1/targets endpoint.\n// It returns all targets registered in prometheus.\nfunc (c *prometheusClient) targets() (promv1.TargetsResult, error) {\n\tvar targets promv1.TargetsResult\n\trsp, err := c.apiRequest(\"/api/v1/targets\", \"state\", \"any\")\n\tif err != nil {\n\t\treturn targets, err\n\t}\n\n\tr := bytes.NewReader(rsp.Data)\n\tdecoder := json.NewDecoder(r)\n\terr = decoder.Decode(&targets)\n\tif err != nil {\n\t\treturn targets, err\n\t}\n\n\treturn targets, err\n}\n"
  }
]